我有一个用于Style的DataGridCell (只有触发器很重要)。
<Style x:Key="DataGridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Foreground" Value="{StaticResource ForegroundBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Background="Transparent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" SnapsToDevicePixels="True" >
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Margin="4, 0, 0, 0"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="{StaticResource DarkForegroundBrush}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
</Trigger>
</Style.Triggers>
</Style>当我像这样定义列时,它是有效的:
<DataGridTemplateColumn Header="Column1" Width="Auto" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Property1, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>但是,当我有TextBox而不是TextBlock这样的时候:
<DataGridTemplateColumn Width="Auto" Header="Column1">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Property1, Mode=OneWay}" IsReadOnly="True" TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>因为TextBox有自己的Style,所以它不起作用。我需要使用TextBox,因为我想让用户从单元格中选择文本。但是,当选择Foreground单元格/行时,我还需要更改颜色。
(背景颜色是暗的,前景颜色是光的,但是当选择一个单元格/行时,背景颜色是浅的,前景色应该是暗的)
编辑
我把我的问题编辑得更清楚了。抱歉之前的误解。我的目标是在DataGridCell中使用DataGridCell,并使用DataGridCellStyle中的Triggers。
任何帮助都很感激。
发布于 2013-03-21 14:23:14
它不会离开/采用Textblock/Textbox样式。你在里面放了一个文本框,一个文本框有一个背景。
尝试将TextBox背景设置为透明。如果您只想从单元格中选择文本,我还建议删除文本框边框。
可以设置下列属性以获得所需的外观。
Background="Transparent" BorderThickness="0" IsReadOnly="True"
设置TextBox上的前景
<DataTemplate>
<TextBox Name="Display" Text=.../>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding
RelativeSource={RelativeSource
Mode=FindAncestor,AncestorType={x:Type DataGridCell}},Path=IsSelected}" Value="true">
<Setter TargetName="Display" Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="{StaticResource DarkForegroundBrush}"/>
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers/>
</DataTemplate>https://stackoverflow.com/questions/15007273
复制相似问题