2012-03-14 70 views
0

我有以下資源的用戶控件:觸發僅適用於第二

<UserControl.Resources> 
    <ControlTemplate TargetType="Button" x:Key="tmp1"> 
     <Image Source="Resources/img1.png> 
    </ControlTemplate> 
    <ControlTemplate TargetType="Button" x:Key="tmp2"> 
     <Image Source="Resources/img2.png> 
    </ControlTemplate> 
</UserControl.Resources> 

我嘗試應用模板按鈕時越來越具有以下觸發有效:

<Style TargetType="Buton"> 
     <Setter Property="Template" Value="{StaticResource tmp1}" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=btn1, Path=IsEnabled}" Value="True"> 
       <Setter Property="Template" Value="{StaticResource tmp2}"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

沒有happends !

聽聽這個:當我添加第二個二傳手如下:(!並且完全不動 - 不施加保證金)

<Style TargetType="Buton"> 
     <Setter Property="Template" Value="{StaticResource tmp1}" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=btn1, Path=IsEnabled}" Value="True"> 
       <Setter Property="Template" Value="{StaticResource tmp2}"></Setter> 
       <Setter Property="Margin" Value="-6"></Setter> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

按鈕改變它的模板。

誰能告訴我是什麼原因導致這種行爲?

+0

什麼是'btn1' ..我不看到任何地方元素.... – 2012-03-14 10:24:18

回答

0

使用標準觸發器觀察「IsEnabled」屬性。 這樣的事情應該工作

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Page.Resources> 
<ControlTemplate TargetType="{x:Type Button}" x:Key="tmp1"> 
    <Image Source="img1.png"/> 
</ControlTemplate> 

<ControlTemplate TargetType="{x:Type Button}" x:Key="tmp2"> 
    <Image Source="img2.png"/> 
    </ControlTemplate> 

    <Style TargetType="Button"> 
     <Setter Property="Template" Value="{StaticResource tmp1}" /> 
     <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Template" Value="{StaticResource tmp2}"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 
    </Page.Resources> 

    <Grid> 
    <Button IsEnabled="False"></Button> 
    </Grid> 
</Page> 

希望這會有所幫助。

Shounbourgh

+0

謝謝,這做到了。 你有什麼想法是什麼導致了DataTrigger的奇怪行爲? – max12345 2012-03-15 07:35:26

+0

...和DataTriggers將用於觸發數據更改。例如。您可以將元素的DataContext屬性綁定到集合或XML文檔。使用您觀察到的包含元素數據的DataTrigger,觸發器將作出反應。有關更多信息(也DataTemplates),我可以參考msdn的文檔:http://msdn.microsoft.com/en-us/library/ms742521.aspx – Shounbourgh 2012-03-15 10:31:48

+0

但對於你的問題(我剛剛認識到,我沒有回答你的問題:D,sry)...起初我混淆了「btn1」在你的Style中的綁定中的用法...什麼是......保證金是一個屬性,它調用一個控件的Measure方法這隱含的手段,控制將重新安排和重組... ...但這也應該發生的風格改變...我不得不說,它有點神祕^^ ..直到現在不知道 – Shounbourgh 2012-03-15 10:42:18

相關問題