【发布时间】:2011-09-12 16:09:56
【问题描述】:
我有一个可以同时选择多个项目的 ListBox。如果恰好选择了 ListBox 中的一项,我有一个需要可见的 UserControl。
这是需要隐藏的窗格:
<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,但我不知道该怎么做。
【问题讨论】:
标签: wpf silverlight silverlight-4.0 binding visibility