0

我只想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 属性时,它根本不会调用我的值转换器。

有任何想法吗?

4

2 回答 2

1

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

<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>
于 2012-10-02T09:03:53.717 回答
0

您可以使用 notifyPropertyChanged 进行计数,或使用 BindableBase 实现。

于 2012-10-02T06:00:05.353 回答