У меня есть ListBox, в котором можно выбрать несколько элементов одновременно. У меня есть UserControl, который должен быть виден, если выбран только один элемент в ListBox.
Вот панель, которую нужно скрыть:
<views:WebMethodsPane x:Name="WebMethodsPane" Grid.Column="1" Grid.Row="0" Margin="5,5,5,0"
Visibility="{Binding SelectedList, Converter={StaticResource SelectionToVisibilityConverter}}" />
Объект SelectedList - это ObservableCollection, который заполняется элементами, выбранными пользователем в ListBox. (Я использовал поведение, чтобы сделать это.)
SelectionToVisibilityConverter работает следующим образом:
public class SelectionToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var selectedServices = value as ObservableCollection<WebService>;
return (selectedServices.Count == 1 ? Visibility.Visible : Visibility.Collapsed);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Когда я запускаю приложение, панель скрыта и остается скрытой. Видимость не обновляется, когда я выбираю различное количество элементов в ListBox. Как я могу убедиться, что обновления видимости? Может быть, мне нужно использовать INotifyPropertyChanged, но я не знаю точно, как это сделать.