我正在尝试更改文本框的前景色(文本颜色),如果选择了listviewitem,则该文本框是GridViewColumn.CellTemplate的数据窗口:
<ListView ItemsSource="{Binding Components}"
Style="{StaticResource PrimaryListViewStyle}"
ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"
Width="150"
MinHeight="150"
SelectionMode="Single"
cal:Message.Attach="[Event SelectionChanged]=[Action ActivateAttributesView($this.SelectedItem)]">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource PrimaryGridViewColumnHeaderStyle}">
<GridViewColumn Header="Component Name">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type viewModels:ComponentViewModel}">
<TextBox Text="{Binding Name}">
<TextBox.Resources>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="ListViewItem.IsSelected"
Value="False">
<Setter Property="Foreground"
Value="Green" />
</Trigger>
<Trigger Property="ListViewItem.IsSelected"
Value="True">
<Setter Property="Foreground"
Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Resources>
</TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
这是一张图片。不幸的是我不允许直接粘贴图像......:
http://de.tinypic.com/r/262s8bb/8
所选行中的文本应显示为“黑色”。
THX。
答案 0 :(得分:1)
您的样式具有应用于其的TextBox的触发器。 TextBox不知道是否选择了包含ListViewItem,因此这不会起作用。
要获得与包含ListViewItem的连接,您可以使用 DataTrigger ,让 RelativeSource 表达式沿着可视树向上移动,直到找到ListViewItem并绑定到它的IsSelected属性:
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers>
<DataTrigger
Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}"
Value="True">
<Setter Property="Foreground"
Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
答案 1 :(得分:0)
我认为你需要一个DataTrigger
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}"
Value="True">
<Setter Property="FontFamily" Value="Segoe UI Semilight"/>
<Setter Property="FontSize" Value="16"/>
</DataTrigger>
</Style.Triggers>
答案 2 :(得分:0)
TextBox listen Foreground已从ListViewItem更改
<Style TargetType="TextBox" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=Foreground}" />
</Style>
当IsSelected属性发生变化时,ListViewItem更改了前景
<Style TargetType="ListViewItem">
<Setter Property="Foreground" Value="Green" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>