如何从代码隐藏中访问我的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"
答案 0 :(得分:0)
var button = (Button)DataGrid.Template.FindName("btnViewTable", "DataGridControl");
button.Click += //Do something;
DataGrid / DataGridControl是实际的DataGridControl
答案 1 :(得分: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
上的属性。
答案 2 :(得分:0)