0

如何从代码隐藏中访问我的 btnViewTable?特别是能够设置可见性打开或关闭,甚至删除它。我查看了 GetTemplateChild 和 FindName,但无法访问该按钮。我可以设法获得对 ControlTemplate 的引用,但除此之外别无他法。

<Grid x:Name="pnlSearch" Background="White">
<TextBlock x:Name="txtSearchResults" />
<sdk:DataGrid x:Name="grdResults">
<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Binding="{Binding Value}"/>
    <sdk:DataGridTextColumn Binding="{Binding FoundFieldName}"/>
</sdk:DataGrid.Columns>
<sdk:DataGrid.RowGroupHeaderStyles>
    <Style TargetType="sdk:DataGridRowGroupHeader">
    <Setter Property="Template">
        <Setter.Value>
        <ControlTemplate TargetType="sdk:DataGridRowGroupHeader">
            <sdk:DataGridFrozenGrid Name="Root">
            <StackPanel>
                <Button x:Name="btnViewTable"
4

3 回答 3

0

我最终只是在代码隐藏中引用了一个属性:

http://www.jayway.com/2011/05/17/bind-from-xaml-to-property-defined-in-code-behind/

于 2013-10-18T18:50:13.190 回答
0

从控件外部处理模板的某些部分始终不是一个好主意。

为了快速修复,我会选择:

<Style TargetType="sdk:DataGridRowGroupHeader">
    <Setter Property="Tag" Value="{Binding SomeVisibilityProperty}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="sdk:DataGridRowGroupHeader">
                <Grid
                    <sdk:DataGridFrozenGrid Name="Root">
                    <StackPanel>
                        <Button x:Name="btnViewTable"
                                Visibility="{TemplateBinding Tag}"

SomeVisibilityProperty数据上下文中的属性在哪里。可能需要使用RelativeSource.

对于“真正的”修复,我会定义一个附加属性。将此属性设置为绑定到父网格上的相同属性,然后让按钮绑定到上的属性DataGridRowGroupHeader

于 2013-10-17T06:06:05.593 回答
0
var button = (Button)DataGrid.Template.FindName("btnViewTable", "DataGridControl");
button.Click += //Do something;

其中 DataGrid/DataGridControl 是实际的 DataGridControl

于 2013-10-16T19:49:04.120 回答