Я пытаюсь изменить цвет переднего плана (цвет текста) текстовое поле, которое является DataTemplate из GridViewColumn.CellTemplate, если выбрано ListViewItem:Изменения переднего плана из текстового поля, встроенное в 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.
Это сделало трюк! О, черт возьми! Я потратил несколько часов на это: (Теперь я должен быстро прочитать о datatriggers, чтобы понять, что здесь происходит! Thx много и счастливый новый год! –
Хорошо, WPF Unleashed 4.5 говорит мне, что DataTrigger можно использовать для non DependencyProperties. Но IsSelected является привязанным свойством зависимостей от «Селектора». Я думаю, что тип свойства здесь не важен. Мне нужен DataTrigger, потому что мне не нужно указывать свойство как с триггером? Это правильно? –
** DataTrigger ** работает с любым свойством, которое поддерживает уведомление об изменении, будь то DependencyProperty или свойство [CLR объекта, реализующего INotifiyPropertyChanged] (http://msdn.microsoft.com/en-us/library/ms743695 (v = vs.110) .aspx) ** Trigger ** работает только с DependencyProperties и, что более важно, только с свойствами текущего объекта. Если вы поместите триггер в стиле для Button, он будет работать для свойств этой кнопки. Ничего другого. – Frank