В моем приложении C#/WPF у меня есть Datagrid
с несколькими столбцами DataGridTextColumn
, используя как перенос текста, так и всплывающую подсказку.Стиль 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
для каждого столбца? Благодаря
Как вы передаете текст всплывающей подсказки к стилю от DataGridTextColumn? Он не принимает параметр всплывающей подсказки – Noxxys
Подсказка может быть свойством элемента, который в настоящее время связан. то есть. если коллекция Student связана как источник элементов, а класс Student имеет свойство Tooltip, вы можете установить его как подсказку, как показано выше. – piyush
@piyush Можете ли вы рассказать мне, как использовать стиль выше в ** DataGridTextColumn ** .. Вы объяснили это в предыдущем комментарии, но я не понял его. Вот как это будет определено, я пытаюсь понять, как мы можем передать текст всплывающей подсказки в этот стиль? –
S52