【问题标题】:UWP/XAML How to Change Individual Items Within a Data BindingUWP/XAML 如何更改数据绑定中的单个项目
【发布时间】:2016-08-23 06:23:53
【问题描述】:

例如,我将 Book 对象的集合数据绑定到 ListView。 ListView 包含“Book.Title”的 TextBlock,因此 UI 将显示集合中的书名列表。但是,如果对于集合中的某些单独书籍,布尔属性“Book.IsCheckedOut”为真,并且我希望这些特定书籍以粗体显示(或斜体或不同颜色或其他)。特定元素如何绑定集合具有分配给它们的唯一属性?

【问题讨论】:

  • 到目前为止你尝试了什么?分享一些代码以获得有关 SO 的帮助

标签: c# xaml uwp


【解决方案1】:

使用转换器,例如:

public class BoolToFontWeightConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var currentValue = (bool);
        return currentValue ? FontWeights.Bold : FontWeights.Normal;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

然后像这样在 xaml 中绑定它:

<TextBlock FontWeight="{Binding IsCheckedOut, Converter={StaticResource BoolToFontWeightConverter}}" />

并且您需要将其作为资源添加到使用它的页面或应用 xaml 中

【讨论】:

    【解决方案2】:

    执行此操作的正确方法是实现ListViewItemTemplateSelector,您可以在另一个问题中查看我的答案:Multiple format types listview in C# and XAML

    要实现这一点,您需要:

    1. 为您的ListView 设计两个DataTemplate,一个粗体,另一个不是。

    2. 实现DataTemplateSelector的类。

    3. 在您的ListView 中使用此DataTemplateSelector

    4. 将数据添加到您的集合并将此集合设置为您的ListViewItemsSource

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2018-09-12
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多