在我的C#/ WPF应用程序中,我有Datagrid
个DataGridTextColumn
列,同时使用文本换行和工具提示。
我可以像这样编写每一列(这样可以正常工作):
<DataGridTextColumn Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" Value="Some tooltip text" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
但我想定义一个可以设置包装和工具提示文本的通用样式,因为知道每个列的工具提示文本会有所不同。目的是避免代码冗余并使其更清晰。
到目前为止,这是我的风格:
<Window.Resources>
<Style x:Key="WrapStyle" TargetType="{x:Type DataGridCell}">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text}" TextWrapping="Wrap">
<TextBox.ToolTip>
<ToolTip>
<ToolTip.Content>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tooltip}" />
</ToolTip.Content>
</ToolTip>
</TextBox.ToolTip>
</TextBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</Window.Resources>
我的专栏:
<DataGridTextColumn Header="Name" Binding="{Binding Name}" CellStyle="{StaticResource WrapStyle}" />
问题在于我无法指定传递给样式的工具提示。有没有办法做到这一点,而不是为每列写5行DataGridTextColumn.CellStyle
?
谢谢
答案 0 :(得分:1)
将样式修改为 -
<Window.Resources>
<Style x:Key="WrapStyle" TargetType="DataGridCell">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<TextBox Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text}" TextWrapping="Wrap">
<TextBox.ToolTip>
<ToolTip>
<ToolTip.Content>
<TextBlock Text="{Binding Path=Tooltip}"></TextBlock>
</ToolTip.Content>
</ToolTip>
</TextBox.ToolTip>
</TextBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
</Window.Resources>