Ще ви трябва 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