2

重複の可能性:
WPFリストボックスの空のデータテンプレート

ItemscontrolのItemsourceは、ObservableCollectionにバインドされています。ObservableCollectionにオブジェクトがない場合に、「リストは空です」というテキストが表示されるようにコードを作成するにはどうすればよいですか。

<ItemsControl Grid.Row="2" Name="itemsControl2" ItemsSource="{Binding RecentPatients}">
4

3 に答える 3

1

あなたはおそらく使用することができますTargetNullValue

参照: http: //msdn.microsoft.com/en-us/library/system.windows.data.bindingbase.targetnullvalue

あなたはそれを次のように追加することができます

<ItemsControl Grid.Row="2" Name="itemsControl2" ItemsSource="{Binding RecentPatients, TargetNullValue=The list is empty}">
于 2012-07-13T11:53:25.027 に答える
0

このロジックは、C# ビュー モデルでも実行できます。xaml コードを変更する必要はありません。

public sealed partial class MainPage : Page, INotifyPropertyChanged {
    private ObservableCollection<string> recentPatients = new ObservableCollection<string>();
    private IList<string> emptyList = new string[] { "This list is empty" };

    public MainPage()   {
        this.InitializeComponent();
        this.DataContext = this;
        this.recentPatients.CollectionChanged += OnCollectionChanged;
    }
    public IList<string> RecentPatients {
        get { return recentPatients.Any() ? recentPatients : emptyList; }
    }
    private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)     {
        if (this.recentPatients.Count <= 1) {
            // It could be a change between empty to non-empty.
            this.OnPropertyChanged("RecentPatients");
        }
    }
    // implement the INotifyPropertyChanged pattern here.
于 2012-07-13T19:24:31.577 に答える
0

私はこれにスタイルを使用します

<Style x:Key="{x:Type ItemsControl}" TargetType="{x:Type ItemsControl}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding Items.Count, RelativeSource={RelativeSource Self}}" Value="0">
            <Setter Property="Background">
                <Setter.Value>
                    <VisualBrush Stretch="None">
                        <VisualBrush.Visual>
                            <TextBlock Text="The list is empty" 
                                       FontFamily="{StaticResource FontFamily}"
                                       FontSize="{StaticResource FontSize}"/>
                        </VisualBrush.Visual>
                    </VisualBrush>
                </Setter.Value>
            </Setter>
        </DataTrigger>
        <DataTrigger Binding="{Binding Items, RelativeSource={RelativeSource Self}}" Value="{x:Null}">
            <Setter Property="Background">
                <Setter.Value>
                    <VisualBrush Stretch="None">
                        <VisualBrush.Visual>
                            <TextBlock Text="The list is empty" 
                                       FontFamily="{StaticResource FontFamily}"
                                       FontSize="{StaticResource FontSize}"/>
                        </VisualBrush.Visual>
                    </VisualBrush>
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>
于 2012-07-13T12:53:27.787 に答える