我有一个DataGrid
,其中一个DataGrid
列看起来像这样
<DataGridTextColumn Header="Value"
Binding="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}"
x:Name="_col2"
IsReadOnly="True"
CanUserSort="False"
Width="*">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" Value="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
问题在于我被迫两次使用BooleanToYesNoConverter转换器。这意味着BooleanToYesNoConverter的Convert方法将被调用两次。因此,我想优化我的代码,并希望直接将ToolTip属性的值绑定到单元格的值。我尝试了使用ElementName的方法。但是我不知道在绑定的Path属性中应该指定什么。
<DataGridTextColumn Header="Value"
Binding="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}"
x:Name="_col2"
IsReadOnly="True"
CanUserSort="False"
Width="*">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" Value="{Binding ElementName=_col2, Path=???}" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
我尝试使用 DataGridTemplateColumn
代替 DataGridTextColumn
,但它也不起作用。
<DataGridTemplateColumn CanUserSort="False"
Header="Значение"
Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value, Converter={StaticResource BooleanToYesNoConverter}}"
Name="_textBlock"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ToolTip" Value="{Binding RelativeSource ElementName=_textBlock, Path=Text}" />
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
我该如何解决我的任务?这个任务是否有可能完成?
Content
是Object
的属性类型。Object
没有Text
属性。请问您知道什么类型的对象具有Text
属性吗?换句话说,Text
属性属于哪种类型?这很有趣且不明显。 - monstr<Style x:Key="CellWithTooltip" ...>
,并且(2)像这样将其应用于所需的列<DataGridTextColumn CellStyle="{StaticResource CellWithTooltip}" ... />
。 - Beauty