这个问题已被多次询问过,但解决方案要么是不好的做法,要么不建议,或者不是问题的通用。也许这个线程可以解决这个问题!
我的窗口中有ControlTemplate:
<Window>
<Window.Resources>
<ControlTemplate x:Key="buttonControl" TargetType="{x:Type Control}">
<Grid Name="grdButtons" FlowDirection="LeftToRight" Height="35" HorizontalAlignment="Right">
<Button Name="btnOk" Content="Ok" Width="75" Margin="10,10,255,0" HorizontalAlignment="Right" IsDefault="True" Click="btnOk_Click" />
<Button Name="btnCancel" Content="Cancel" Width="75" HorizontalAlignment="Right" Margin="10,10,175,0" IsCancel="True" Click="btnCancel_Click"/>
<Button Name="btnApply" Content="Apply" Width="75" HorizontalAlignment="Right" Margin="10,10,95,0" Click="btnApply_Click" />
<Button Name="btnDeleteRule" Content="Delete" Width="75" HorizontalAlignment="Right" Margin="10,10,15,0" Click="btnDeleteRule_Click" />
</Grid>
</ControlTemplate>
</Window.Resources>...
从代码隐藏,我需要根据我在代码中设置的一些操作启用或禁用此按钮。如何从代码后面正确访问按钮btnDeleteRule?我尝试过使用FindName()但总是得到null。
答案 0 :(得分:2)
答案仍然是:
IsEnabled
绑定到某个属性。如果您想忽略“不要这样做”,您需要在模板上使用FindName
,而不是控件。
var button = (Button)someControl.Template.FindName("btnDeleteRule", someControl);