2012-03-01 37 views
0

我有,我需要一個DataTriggerPropertyTrigger結合成一個MultiDataTrigger顯示在GridViewColumnImage問題(與TreeView結合起來,這是我使用一個自定義的控制) 。我嘗試和搜索互聯網上的一些變薄,這是多遠我來:MultiTrigger:組合DataTrigger和PropertyTrigger不工作

<Image Width="16" 
     Height="16" 
     Stretch="UniformToFill"> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Source" 
          Value="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" /> 
        <Style.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
          <Condition Binding="{Binding WpfSettings.IsExpanded}" Value="True" /> 
          <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=Source}" Value="/folder_closed.png" /> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Source" Value="/folder_open.png" /> 
         </MultiDataTrigger> 
        </Style.Triggers> 
      </Image.Style> 
    </Image> 

現在,最初,Image可以有兩個圖像,根據Converter。無論是folder_open,還是另一個(現在不重要)。現在我想要的是:當TreeViewNode被展開(WpfSetting.IsExpanded = true),並且圖像源是folder_closed時,我希望圖像獲取folder_open圖像。我認爲我接近上面的代碼,但它並不真正起作用。當我打開TreeViewNode時,Image根本沒有變化。

我覺得我在RelativeSource=Self上的條件做錯了,但我不確定。

任何人都可以幫助我嗎?提前致謝。

當然,如果需要可以提供更多信息/代碼。

回答

1

的問題不在於的RelativeSource =自但是當你嘗試比較源(這是類型的ImageSource的)以字符串值(「/folder_closed.png」),它返回false

請嘗試以下條件:

<Condition Binding="{Binding ScorecardNiveau, Converter={StaticResource ScorecardNiveauToImageConverter}}" Value="/folder_closed.png" /> 
+0

我試過了,它仍然沒有工作,雖然它比較轉換器的返回值有很大的意義。 – 2012-03-01 10:56:45

+0

我認爲問題出在WpfSettings.IsExpanded屬性上。當我使用MultiValueConverter進行調試時,IsExpanded屬性的值爲「UnsetDependencyProperty」,可能在調用觸發器時也是如此。 – 2012-03-01 11:01:13

+0

可以。我嘗試了一個與IsExpanded類似的測試代碼,如true/false,它按預期工作 – 2012-03-01 11:13:09