代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

基于IList中项的数据的WPF数据绑定和样式

  •  1
  • Nate CSS Guy  · 技术社区  · 15 年前

    我有一个列表框绑定到一个项目列表(对于争论,假设它有一个字符串,输入并完成了两个日期)。

    如果完成日期时间为,我希望列表框中项目的背景色为灰色!=datetime.minValue。

    编辑:

    我要做个转换器吗?然后根据日期时间的值将日期时间转换为画笔?

    这是我最好的选择吗?还是有一个简单的XAML代码片段可以使用?

    [ValueConversion(typeof(DateTime), typeof(Brush))]
    class MyConverter : IValueConverter
    {
        ...
    }
    
    1 回复  |  直到 15 年前
        1
  •  8
  •   Andy    15 年前

    ValueConverter 会起作用。另一种选择是使用 DataTrigger 在风格上 ListBoxItem . 可能是这样的:

    <Style x:Name="MinDateTimeListBoxStyle" TargetType="ListBoxItem">
        <Style.Triggers>
            <Setter Property="Background" Value="Gray" />
            <DataTrigger Binding="{Binding Path=Done}"
                Value="{x:Static sys:DateTime.MinValue}">
                <Setter Property="Background" Value="White" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
    

    Done 不是 DateTime.MinValue . 我认为没有一种方法可以在触发器中进行不等于比较,因此它默认将背景设置为灰色,并且仅在 多恩 还没有改变。最好是为背景使用正确的颜色,而不是白色(可能得到父级背景的值?)但是这应该给你一些开始的东西。

    更新 :若要仅将此样式应用于特定列表框的项,请为该样式命名并设置 ItemContainerStyle 酌情:

    <ListBox x:Name="StyledListBox"
        ItemContainerStyle="{StaticResource MinDateTimeListBoxStyle}" />
    <ListBox x:Name="NormalListBox" />