2012-01-25 3 views
0

Этот вопрос задавался много раз повсюду, но решения либо плохой практики, либо не рекомендуется, либо не являются типичными для этой проблемы. Возможно, этот поток может это исправить!Как получить доступ к внутреннему элементу ControlTemplate из Window.Resources?

У меня есть 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.

ответ

2

Ответ на этот вопрос до сих пор:

  1. Не делайте этого.
  2. Bind IsEnabled в собственность.

И если вы хотите игнорировать «не делают этого» вам нужно использовать FindName на шаблоне, а не управления.

var button = (Button)someControl.Template.FindName("btnDeleteRule", someControl); 
+0

Что значит не делать этого? Это должно быть сделано, так как Microsoft рекомендует нам это делать? Не могли бы вы подробнее рассказать о том, как привязать isEnabled к свойству? – joepetrakovich

+0

@some_developer: Кто говорит, что это должно быть сделано? И где Microsoft рекомендует его? Если вы не знаете, как работают привязки, см. [Обзор] (http://msdn.microsoft.com/en-us/library/ms752347.aspx), я не буду вдаваться в подробности об этом здесь. –

Смежные вопросы