2016-08-25 91 views
0

我有一個Teleric radgrid控件查看像這樣綁定到一個屬性稱爲負載:WPF綁定DataTrigger到不同的物業

<telerik:RadGridView x:Name="myRadGridView" 
         ItemsSource="{Binding Load}"> 

我有一個DataTrigger爲同一電網,我想綁定到一個叫做物業checkColor與RadGridView的Load屬性在同一個類中。我認爲這是行不通的,因爲兩個屬性都在同一個類中?什麼是正確的語法?

 <telerik:RadGridView.Resources> 
      <Style TargetType="telerik:GridViewRow"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding checkColor}" Value="true"> 
         <DataTrigger.Setters> 
          <Setter Property="Background" Value="Blue" /> 
         </DataTrigger.Setters> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </telerik:RadGridView.Resources> 
+2

_「?我認爲這是行不通的,因爲這兩個屬性都在同一個班」 _ - 爲什麼會是這樣嗎?在我看來,更可能的問題是你在上面所做的所有事情都是聲明'Style'資源,但是在你想要應用它的對象的'Resources'中。這是行不通的。您需要在該對象的_parent_對象之一中聲明它。如果這不是問題,請提供一個可靠地再現問題的良好[mcve]。 –

+0

如果我將排列在數據觸發器上方,它將應用,所以樣式正在應用。 (樣式位於我的RadGridView定義中。)我在checkColor屬性中設置了一個斷點,它永遠不會運行。我認爲它找不到它 - 有什麼方法可以確認嗎? – Jeff

+0

找到另一個方法。感謝彼得的評論。 – Jeff

回答

0

P.s.重新審視這一點,並最終找到真正的解決方案。

1)在窗口中添加了一個項目,指向我想參考的類。

xmlns:local="clr-namespace:MyClass" 

2)創建一個靜態資源給它的父組件上:

<DockPanel.Resources> 
     <local:Changes x:Key="MyViewModel"/> 
    </DockPanel.Resources> 

3)設置我的二傳手它結合點:

<Setter Property="Background" Value="{Binding Source={StaticResource MyViewModel}, Path=checkColor}"/> 

老「解決方案「:

最終解決問題通過將checkColor函數將要返回的數據放入RadGridView綁定的DataTable中的新列。由於列是RadGridView的約束範圍的一部分,我可以把它綁定到DataTrigger這樣的:

<telerik:RadGridView.Resources> 
    <Style TargetType="telerik:GridViewRow"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding checkColorDataColumn}" Value="1"> 
      <DataTrigger.Setters> 
       <Setter Property="Background" Value="Blue" /> 
      </DataTrigger.Setters> 
     </Style.Triggers> 
    </Style> 
</telerik:RadGridView.Resources>