ComboBox IsEnabled Обязательный вопрос в Silverlight Xaml - PullRequest
3 голосов
/ 10 июня 2011

У меня есть ComboBox, xaml которого выглядит следующим образом

<ComboBox Name="ComboBoxDiscussionType" IsEnabled="{Binding ElementName=ComboBoxDiscussionType, Path=Items.Count, Converter={StaticResource ComboBoxItemsCountToBoolConverter}}"/>

, и конвертер берет Items.Count и проверяет, больше ли его значение 0, если больше 0, затем включаю его, иначе отключаю его

Цель состоит в том, чтобы включить ComboBox, если ComboBox, только если в нем есть Предметы, иначе отключить его (самостоятельное связывание со своим item.count)

как мне этого добиться?Прямо сейчас вышеуказанная привязка дает мне ошибку

1 Ответ

5 голосов
/ 10 июня 2011

По причинам, которые я не понимаю, в Silverlight value, как видно из конвертера, имеет тип double, но должно быть int. На самом деле это int на WPF.

Но так как это так, просто обработав его , как a double, исправил проблему:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    return (int)(double)value > 0;
}

Как ни странно, более традиционная относительная привязка источника также не работает:

<Binding RelativeSource="{RelativeSource Self}" .../>

но ваша первоначальная привязка имени элемента имеет:

<ComboBox Name="ComboBoxDiscussionType" IsEnabled="{Binding ElementName=ComboBoxDiscussionType, Path=Items.Count, Converter={StaticResource ComboBoxItemsCountToBoolConverter}}"/>

Мне это кажется довольно глючным, но Silverlight иногда странный зверь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...