Silverlight 4.0 SL 4:将选项卡项可见性绑定到复选框
Silverlight 4.0 SL 4:将选项卡项可见性绑定到复选框,silverlight-4.0,binding,Silverlight 4.0,Binding,当我创建一个新的选项卡项时,我会同时创建一个新的复选框。 我想将TabItem的可见性绑定到复选框,但设置绑定时遇到问题 CheckBox cb = new CheckBox(); cb.Content = tabItemName; cb.Name = tabItemName; var visibilityBinding = new Binding("IsChecke
当我创建一个新的选项卡项时,我会同时创建一个新的复选框。
我想将TabItem的可见性绑定到复选框,但设置绑定时遇到问题
CheckBox cb = new CheckBox();
cb.Content = tabItemName;
cb.Name = tabItemName;
var visibilityBinding = new Binding("IsChecked");
visibilityBinding.Mode = BindingMode.TwoWay;
visibilityBinding.ElementName = cb.Name; // this could just be a string literal
visibilityBinding.Converter = new VisibilityConverter();
m.TabItem.SetBinding(TabItem.VisibilityProperty, visibilityBinding);
cb.IsChecked = true;
在运行时,我会遇到以下错误:System.Windows.Data错误:BindingExpression路径错误:在“Telerik.Windows.Controls.RadTabItem”Telerik.Windows.Controls.RadTabItem“”上未找到“IsChecked”属性(HashCode=66442352)。BindingExpression:Path='IsChecked'DataItem='Telerik.Windows.Controls.RadTabItem'(HashCode=66442352);目标元素是'Telerik.Windows.Controls.RadTabItem'(Name='Central…');目标属性为“可见性”(类型为“System.Windows.Visibility”) 我做错了什么?我认为绑定构造函数的参数是源对象(复选框)上的属性,该对象绑定到SetBinding()调用中命名的属性 谢谢你的建议 更新:
我加了
visibilityBinding.Source=cb 并在运行时获取此错误:
使用Binding时无法设置Binding.RelativeSource。SourceBinding.Source()是以编程方式进行绑定所必需的,并且与Binding.ElementName独占。
因此,这是可行的:
var visibilityBinding = new Binding("IsChecked");
visibilityBinding.Source = cb;
visibilityBinding.Mode = BindingMode.TwoWay;
// visibilityBinding.ElementName = cb.Name;
visibilityBinding.Converter = new VisibilityConverter();
m.TabItem.SetBinding(RadTabItem.VisibilityProperty, visibilityBinding);
希望这对其他人有所帮助……为什么不在XAML中执行呢?因为用户可以在运行时创建其他选项卡项。