如何在C#中编程创建Binding为{Binding}的DataTrigger?
结论
你写的trigger.Binding = new Binding();完全正确,和XAML中的{Binding}效果完全一致。
无参构造的Binding对象默认没有指定Path,就是绑定到当前绑定上下文(DataContext)本身,和你XAML里的Binding="{Binding}"逻辑完全匹配。
完整C#实现代码
// 初始化DataTrigger var dataTrigger = new DataTrigger { // 等价于XAML的Value="{x:Null}" Value = null, // 等价于XAML的Binding="{Binding}" Binding = new Binding() }; // 初始化Setter,注意Property参数需要传入对应的依赖属性 // 示例中假设你要设置的是MyControl类的SomeProperty依赖属性 var setter = new Setter { Property = MyControl.SomeProperty, Value = SomeValue }; // 将Setter加入DataTrigger的Setters集合 dataTrigger.Setters.Add(setter); // 最后将DataTrigger添加到对应控件的Style.Triggers集合中 // 示例:给myControl的Style加触发器 var myControlStyle = new Style(typeof(MyControl)); myControlStyle.Triggers.Add(dataTrigger); myControl.Style = myControlStyle;
补充说明
如果你需要绑定到DataContext下的某个属性而非整个DataContext,才需要给Binding指定Path参数,比如等价于{Binding UserName}的写法是new Binding("UserName")。
内容的提问来源于stack exchange,提问作者Themelis
相关产品推荐
相关产品推荐

