【问题标题】:WPF: ListView: Display a default value instead of an empty string [duplicate]WPF:ListView:显示默认值而不是空字符串[重复]
【发布时间】:2018-04-26 11:07:32
【问题描述】:

我有一个 Listview,它的 ItemSource 绑定到 ObservableCollection,而 SelectedItem 绑定到一个字符串。可观察集合可能包含空字符串;在这种情况下,我希望列表视图显示一些特殊的字符串,而不仅仅是一个没有文本的空项。

这就是我想象的应该如何工作:

<ListView ItemSource="{Binding AvailableTags}" SelectedItem="{Binding SelectedTag}">
<ListView.ItemContainerStyle>
     <Style TargetType="ListViewItem">
          <Setter Property="Content" Value="Untagged" />
              <Style.Triggers>
                   <DataTrigger Binding="-> Which binding to use?" Value="">
                       <Setter Property="Content" Value="-> How to get the Default value?" />
                   </DataTrigger>
              </Style.Triggers>
     </Style>
</ListView.ItemContainerStyle>
</ListView>

如您所见,在这个虚拟源代码中,有两个占位符。我怎样才能让它工作?还是我走错了路?

【问题讨论】:

  • 显示您的视图模型代码。 AvailableTags 是 ObservableCollection 吗?

标签: c# wpf xaml data-binding


【解决方案1】:

您可以修改 ListView ItemTemplate,并像这样使用 IValueConverter:

<ListView 
        ItemsSource="{Binding AvailableTags}" 
        SelectedItem="{Binding SelectedTag}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Converter={StaticResource TagConverter}}"/>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

转换器:

public class TagConverter : IValueConverter
{
    #region IValueConverter Members

    object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        string tag = (string)value;

        return string.IsNullOrEmpty(tag) ? "Your custom string display" : tag;
    }

    object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

记得将转换器添加为范围内的资源。

【讨论】:

  • 这有帮助。我先用转换器尝试了它,但将它添加到 ,因此它试图转换完整的 ObservableCollection.
  • 很高兴它有帮助!
猜你喜欢
  • 2013-11-07
  • 2012-12-29
  • 2011-03-29
  • 2023-01-18
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
相关资源
最近更新 更多