将DataGridRowHeader按钮工具提示绑定到行对象属性

时间:2017-09-06 07:42:40

标签: c# wpf wpfdatagrid datagridrowheader

我的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>

1 个答案:

答案 0 :(得分:1)

DataGridRow不是ButtonRowHeaderTemplate的视觉祖先,但DataGridRowHeader是:

Visibility="{Binding DataContext.ShowSelectParentBtn, RelativeSource={RelativeSource AncestorType=DataGridRowHeader}, Converter={StaticResource bool2VisibilityConverter}}"

您的第二个问题是Tooltip位于自己的元素树中。您可以通过将Tag的{​​{1}}属性绑定到Button的{​​{1}}来解决此问题,然后使用DataContext DataGridRowHeader绑定到此属性{1}}:

PlacementTarget