Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DataTrigger绑定到接口属性_C#_Wpf_Xaml_.net 4.0_Datatrigger - Fatal编程技术网

C# 如何将DataTrigger绑定到接口属性

C# 如何将DataTrigger绑定到接口属性,c#,wpf,xaml,.net-4.0,datatrigger,C#,Wpf,Xaml,.net 4.0,Datatrigger,我有4个类来实现我的自定义ICalendarItem接口。 该接口有一个名为“Jours”的属性 ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours; observedcollection焦耳; 我的类重写该属性,如下所示: public override ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours

我有4个类来实现我的自定义ICalendarItem接口。 该接口有一个名为“Jours”的属性

ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours;
observedcollection焦耳;
我的类重写该属性,如下所示:

public override ObservableCollection<KeyValuePair<DateTime, DateTime>> Jours {...}
public override observeablecollection Jours{…}
当焦耳数从0变为1时,我想触发一个动作,所以我尝试了以下方法:

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

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

这两个数据触发器都不起作用


有人知道如何将DataTrigger绑定到接口属性吗?

在我的测试中,它的工作做得很好。请参考以下代码,这可能对您有所帮助

这段代码的作用是,当“Jours.Count”等于“3”时,窗口背景变为红色。 XAML:


代码隐藏:

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; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
ITest测试=新的TestClass();
this.DataContext=test;
}
}
接口测试
{
可观察的收集Jours{get;set;}
}
类TestClass:ITest
{
公共测试类()
{
焦耳=新的可观测集合();
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
}
公共可观测集合日{get;set;}
}

在我的测试中,它的工作做得很好。请参考以下代码,这可能对您有所帮助

这段代码的作用是,当“Jours.Count”等于“3”时,窗口背景变为红色。 XAML:


代码隐藏:

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; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
ITest测试=新的TestClass();
this.DataContext=test;
}
}
接口测试
{
可观察的收集Jours{get;set;}
}
类TestClass:ITest
{
公共测试类()
{
焦耳=新的可观测集合();
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
添加(新的KeyValuePair(DateTime.Now,DateTime.Now));
}
公共可观测集合日{get;set;}
}

当您想要专门绑定到自定义接口属性时,需要将名称空间、接口和属性名称放在括号内。然后可以引用子属性,如括号外的Count

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

...

当您想要专门绑定到自定义接口属性时,需要将名称空间、接口和属性名称放在括号内。然后可以引用子属性,如括号外的Count

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

...

我必须在我的词汇表顶部包括'xmlns:ifs=“clr namespace:resourceshumaines.Interfaces”'并像这样引用我的属性,它成功了,ty!正确,我应该在我的答案中指定如何指定名称空间,但很高兴你能找到它,我必须在我的词汇表顶部包括'xmlns:ifs=“clr namespace:RessourcesHumaines.Interfaces”“,并像这样引用我的属性,这很有效,ty!正确,我应该在我的答案中指定如何指定名称空间,但很高兴您能理解