我的DataGridRowHeader
模板中有一个按钮,我位于我的列的右侧。
这种布局的好处在于,当您单击按钮时,它不会选择该行,就像您将其放在列中一样。
我现在发现的问题是我试图绑定行的对象属性,例如在按钮的ToolTip
中。即使我对其进行硬编码,它也会一直空白。对Visibility
的相同类型的绑定工作正常。
如何修复工具提示?
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<Button x:Name="btnSelectParent"
Template="{StaticResource SelectParentButtonStyle}"
Height="15" Width="15"
Margin="0,0,-669,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
ToolTipService.ShowOnDisabled="True"
Visibility="{Binding DataContext.ShowSelectParentBtn, RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={StaticResource bool2VisibilityConverter}}" >
<Button.ToolTip>
<TextBlock TextAlignment="Left"
Foreground="Black"
FontWeight="Normal"
Text="{Binding DataContext.ParentBtnMessage, RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
</Button.ToolTip>
</Button>
</Grid>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
答案 0 :(得分:1)
DataGridRow
不是Button
中RowHeaderTemplate
的视觉祖先,但DataGridRowHeader
是:
Visibility="{Binding DataContext.ShowSelectParentBtn, RelativeSource={RelativeSource AncestorType=DataGridRowHeader}, Converter={StaticResource bool2VisibilityConverter}}"
您的第二个问题是Tooltip
位于自己的元素树中。您可以通过将Tag
的{{1}}属性绑定到Button
的{{1}}来解决此问题,然后使用DataContext
DataGridRowHeader
绑定到此属性{1}}:
PlacementTarget