I DataGrid
und einer der DataGrid
Spalten wie folgt aussiehtBinding Datagridcell ToolTip-Eigenschaft auf den Wert der Datagridcell
<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>
Das Problem ist, ich BooleanToYesNoConverter
Konverter zweimal verwenden gezwungen. Dies bedeutet, dass Convert
Methode von BooleanToYesNoConverter
zweimal aufgerufen wird. Daher möchte ich meinen Code optimieren. Und möchten den Wert der ToolTip
Eigenschaft direkt an den Wert der Zelle binden.
Ich versuchte Ansatz mit ElementName
-s. Aber ich habe keine Ahnung, was ich in Pfad Eigenschaft der Bindung angeben sollte.
<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>
Ich versuchte DataGridTemplateColumn
statt DataGridTextColumn
zu verwenden, aber es does 't zu arbeiten.
<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>
Wie kann ich meine Aufgabe lösen. Ist es überhaupt möglich?
Es funktioniert gut. Danke. – monstr
Btw, 'Content' ist der Eigenschaftstyp von' Object'. 'Objekt' hat keine 'Text'-Eigenschaft. Weißt du, welcher Objekttyp eine 'Text'-Eigenschaft hat? Mit anderen Worten, zu welcher Art gehört die Eigenschaft 'Text'? Es ist interessant und nicht offensichtlich. – monstr
Ja, Sie denken richtig. In ContentPresentor von DataGridCell hat es einen TextBlock und dieser TextBlock hat die Eigenschaft Text. Verstehst du? –