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

CountにnotifyPropertyChangedを使用するか、BindableBaseを使用して実装できます。

于 2012-10-02T06:00:05.353 に答える