【发布时间】:2011-09-23 12:45:21
【问题描述】:
我将 ObservableCollection 绑定到一个控件,该控件具有一个转换器,可以根据集合是否有任何值来更改其可见性:
简化示例:
XAML:
<Window.Resources>
<local:MyConverter x:Key="converter"/>
</Window.Resources>
<Grid x:Name="grid">
<Rectangle Height="100" Width="200" Fill="CornflowerBlue"
Visibility="{Binding Converter={StaticResource converter}}"/>
<Button Content="click"
HorizontalAlignment="Left" VerticalAlignment="Top"
Click="Button_Click"/>
</Grid>
C#:
ObservableCollection<string> strings;
public MainWindow()
{
InitializeComponent();
strings = new ObservableCollection<string>();
grid.DataContext = strings;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
strings.Add("new value");
}
当集合被绑定时,Rectangle 在有值时可见,而在集合为空时不可见。但是,如果集合为空并且我在运行时添加了一个值,则 Rectangle 不会出现(甚至不会触发转换器的 Convert 方法)。我是遗漏了什么还是只是想对 IValueConverter 提出太多要求?
【问题讨论】:
-
所以...绑定到 ObservableCollection
.Count 使转换器按预期工作,所以我猜测向集合添加值不会触发 PropertyChanged 事件...临时我想的解决方案是多绑定集合和它的 .Count 方法,但这听起来很讨厌......
标签: wpf observablecollection converter