如何基于集合的空虚来绑定数据?

时间:2012-10-02 04:41:50

标签: xaml data-binding windows-8

我想只在集合为空时才能看到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." />

问题是只绑定集合本身只调用我的值转换器一次,当它是空的时,而不是当集合的内容发生变化时(有点意义)。如上所示,当我尝试绑定集合的Count属性时,它根本不会调用我的值转换器。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我应用了一个棘手的解决方案。它也可能对你有用。 Taks一个临时组合框并将该集合绑定。

<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>

答案 1 :(得分:0)

您可以对Count使用notifyPropertyChanged,或使用BindableBase实现。