Для этого вам понадобится ValueConverter
. В этой статье это подробно описано, но Резюме: вам нужен общедоступный класс, который реализует IValueConverter. В методе Convert() вы можете сделать что-то вроде этого:
if(!(value is int)) return false;
if(value == -1) return false;
return true;
Теперь в вашем XAML вам нужно сделать:
<Window.Resources>
<local:YourValueConverter x:Key="MyValueConverter">
</Window.Resources>
И, наконец, измените свою привязку на:
IsEnabled="{Binding myList.SelectedIndex, Converter={StaticResource MyValueConverter}"
Вы уверены, что не имели в виду
IsEnabled="{Binding ElementName=myList, Path=SelectedIndex, Converter={StaticResource MyValueConverter}"
хотя? Вы не можете неявно поместить имя элемента в путь (если только Window
не является DataContext
, я думаю). Также может быть проще привязать к SelectedItem и проверить, не равен ли он нулю, но на самом деле это просто предпочтение.
О, и если вы не знакомы с альтернативными объявлениями xmlns
, в верхней части вашего Window
добавьте
xmlns:local=
и VS предложит вам различные возможности. Вам нужно найти тот, который соответствует пространству имен, в которое вы поместили созданный вами преобразователь значений.
person
JustABill
schedule
01.06.2010