2013-03-20 13 views
1

我想根據動態資源的值切換控件樣式。我可以檢查數據觸發器中動態資源的值

<Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" > 
    <Image.Triggers> 
     <DataTrigger Binding="{DynamicResource BlackAndWhite}" Value="True"> 
      <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" /> 
     </DataTrigger> 
    </Image.Triggers> 
</Image> 

編譯沒有問題,但隨後在運行時我得到以下異常:

A 'DynamicResourceExtension' cannot be set on the 'Binding' property of type 'DataTrigger'. A 'DynamicResourceExtension' can only be set on a DependencyProperty of a DependencyObject. 

是林試圖做可能嗎?我只是有錯誤的語法?我應該以不同的方式去做嗎?

編輯 我已經改變了我的代碼:

<DataTemplate x:Key="ViasTemplate"> 
        <StackPanel Orientation="Horizontal"> 
         <Border Padding="{Binding ElementName=templateTest, Path=DataContext.GridRow.LeftBondIndent}" Width="50"> 
          <Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" > 
           <Image.Triggers> 
            <DataTrigger Binding="{Binding Source={StaticResource BlackAndWhite}}" Value="True"> 
             <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" /> 
            </DataTrigger> 
           </Image.Triggers> 
          </Image> 

,但現在得到此異常:

Triggers collection members must be of type EventTrigger 

感謝

回答

1
<Image x:Name="leftImg" Stretch="Fill" Style="{StaticResource BookendImageStyle}" > 
     <Image.Triggers> 
      <DataTrigger Binding="{Binding Source={DynamicResource BlackAndWhite}}" Value="True"> 
       <Setter TargetName="leftImg" Property="Style" Value="{StaticResource BookendImageStyleBW}" /> 
      </DataTrigger> 
     </Image.Triggers> 
    </Image> 

ofcourse你應該這樣觸發移動到圖像樣式。 DataTrigger只能在樣式或模板中定義

+0

嘗試此操作時,我遇到同樣的問題。我現在把它改成了一個靜態資源,但現在我得到了一個不同的異常。請參閱編輯問題 – user589195 2013-03-20 14:02:57

+0

這就是我說的,你不能這樣定義DataTrigger。你應該把它放在BookendImageStyle中或者在這裏創建一個新的並且基於它BookendImageStyle – user1064519 2013-03-20 14:34:25

+0

你會怎麼做這個觸發? – tofutim 2015-08-26 03:00:51

相關問題