【发布时间】:2017-12-01 09:11:55
【问题描述】:
这是我的绑定数据:
List<MyData> files;
public clas MyData
{
public string Name { get; set; } // Column
public bool IsOK { get; set; } // Not a Column
public string Format { get; set; } // Column
}
我的ListView:
<ListView
Grid.Row="0"
Name="lvFiles"
ItemsSource="{Binding wiresharkFiles}">
<ListView.ItemContainerStyle>
<DataTrigger Binding="{Binding IsOK}" Value="True">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Foreground" Value="White"></Setter>
<Setter Property="Background" Value="Green"/>
</MultiTrigger>
</ListView.ItemContainerStyle>
我有几个ListViewColumns,因为我只想更改名称列的颜色,我将其添加到我的另一列(格式列)GridViewColumn:
<GridViewColumn Width="115" Header="Format">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock
x:Name="textBlock"
Text="{Binding FileFormat}"
Margin="0,0,0,0"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsOK}" Value="True">
<Setter TargetName="textBlock" Property="Foreground" Value="Silver"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
这不会将此Column(格式列)标记为红色,但如果IsMouseIsOver 是true,则此column 仍在Silver 中并且不会像在我的trigger 中定义的那样变成White。
所以我将我的GridViewColumn 更改为:
<GridViewColumn Width="115" Header="Format">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock
x:Name="textBlock"
Text="{Binding FileFormat}"
Margin="0,0,0,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding BadCheckSumExist}" Value="True">
<Setter TargetName="textBlock" Property="Foreground" Value="Silver"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
但这仍然无法按预期工作。
【问题讨论】:
标签: wpf triggers datatrigger