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。