Xaml 如何基于集合的空性绑定数据?
我想使Xaml 如何基于集合的空性绑定数据?,xaml,data-binding,windows-8,Xaml,Data Binding,Windows 8,我想使TextBlock仅在集合为空时可见。我有一个ListView,它已经是绑定到集合的数据,这很简单。我只想在ListView为空时显示其他内容 我编写了一个IValueConverter,它将获取集合、计数或我需要的任何内容,并相应地返回一个Visibility。XAML如下所示: <TextBlock Visibility="{Binding Count, ElementName=ContactsList, Converter={StaticResource visibilityW
TextBlock
仅在集合为空时可见。我有一个ListView,它已经是绑定到集合的数据,这很简单。我只想在ListView为空时显示其他内容
我编写了一个IValueConverter
,它将获取集合、计数或我需要的任何内容,并相应地返回一个Visibility
。XAML如下所示:
<TextBlock Visibility="{Binding Count, ElementName=ContactsList, Converter={StaticResource visibilityWhenEmpty}}"
Text="No contacts yet. Add one using the AppBar below." />
问题是,仅绑定集合本身只在集合为空时调用一次my value converter,而在集合内容发生更改时(有点道理)不会再次调用my value converter。如上所示,当我尝试绑定集合的Count属性时,它根本不会调用我的值转换器
有什么想法吗?您可以使用notifyPropertyChanged进行计数,或者使用BindableBase实现。我也遇到过同样的问题。我采用了一个棘手的解决方案。这可能对你也有用。获取一个临时组合框并用它绑定集合
<ComboBox x:Name="TempComboBox"
ItemsSource="{Binding DataContext.ContactsList,
RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" >
<ComboBox.Template>
<ControlTemplate>
<!--Add file button..-->
<TextBlock Content="Your text..."
>
<TextBlock.Visibility>
<Binding Path="Items.Count"
RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=ComboBox}"
Converter="{StaticResource visibilityWhenEmpty}">
</Binding>
</TextBlock.Visibility>
</TextBlock>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>
请在您的回答中添加更多内容,因为我没有实施可观察收集
我不知道我将如何做到这一点。此外,即使我在自定义集合类型上实现了这一点,问题是绑定到Count根本不起作用,所以不是没有引发notifychange。