2011-06-21 97 views
0

我有4個類實現我的自定義ICalendarItem接口。 該接口有一個名爲'Jours'的屬性。如何將DataTrigger綁定到接口屬性

ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours; 

我的類重寫,像這樣性質:

public override ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours {...} 

當Jours.Count從0到1,我想觸發動作,所以我想這:

<DataTrigger Binding="{Binding Path=Jours.Count}" Value="1"> 

<DataTrigger Binding="{Binding Path=(ICalendarItem)Jours.Count}" Value="1"> 

這兩個DataTrigger都不起作用。

任何人都知道如何將DataTrigger綁定到一個接口的財產?

回答

2

當你想特異性結合到自定義接口屬性,您需要將地方括號內的命名空間,接口和屬性名。然後,您可以在括號外引用像Count這樣的子屬性。

<DataTrigger Binding="{Binding Path=(local:ICalendarItem.Jours).Count}" Value="1"> 
... 
</DataTrigger> 
+1

我不得不包括 '的xmlns:IFS = 「CLR-名稱空間:RessourcesHumaines.Interfaces」' 我dictionnary的頂部,並引用我的屬性這樣的它工作,ty! – Gab

+0

正確,我應該指定如何在我的答案中指定命名空間,但很高興你知道了它的意思 – sellmeadog

1

在我的測試中,它的工作做得很好。請參考以下代碼,這可能對您有所幫助。

這段代碼做的是,當'Jours.Count」等於‘3’,窗口背景變紅色。 XAML:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style TargetType="Grid"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Jours.Count}" Value="3"> 
        <Setter Property="Control.Background" Value="Red" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <Grid> 
    </Grid> 
</Window> 

代碼隱藏:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     ITest test = new TestClass(); 
     this.DataContext = test; 
    } 
} 

interface ITest 
{ 
    ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours { get; set; } 
} 

class TestClass : ITest 
{ 
    public TestClass() 
    { 
     Jours = new ObservableCollection<KeyValuePair<DateTime, DateTime>>(); 
     Jours.Add(new KeyValuePair<DateTime, DateTime>(DateTime.Now, DateTime.Now)); 
     Jours.Add(new KeyValuePair<DateTime, DateTime>(DateTime.Now, DateTime.Now)); 
     Jours.Add(new KeyValuePair<DateTime, DateTime>(DateTime.Now, DateTime.Now)); 
    } 

    public ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours { get; set; } 
} 
相關問題