我正在DockManager上动态创建绑定,以便在ViewModel中有一个属性,告诉我View / ViewModel是否可见。
我已经完成了一些测试,因为我已经完成了其他绑定,但在这种特殊情况下我需要从视图绑定到ViewModel而不是相反的
我的代码看起来像
VisibilityToBooleanConverter converter = new VisibilityToBooleanConverter();
var myBinding = new Binding
{
Source = pane.Content, //this is the view
Path = new PropertyPath("Visibility"),
Mode = BindingMode.OneWay,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
Converter = converter
};
BindingOperations.SetBinding(pane.DataContext,) //<-- how do I tell that I've to bind to a ViewModel?
//BindingOperations.SetBinding((UIElement)pane.Content, UIElement.VisibilityProperty, myBinding); //this was the test I've done but with no luck
有什么建议吗?
我试图更好地解释我的情景,正如我所建议的那样。
我有一个显示不同视图的DockManager。其中一些视图具有实时更新,这些视图确实在高频率下完成。如果它们不可见则更新它们是没用的。
所以首先我试图绑定IsVisible但是你不可能这样做(没有setter)。
我的问题是,可以在后面的代码中绑定Visibility属性,以便我可以以某种方式保存在viewmodel中的这些信息
答案 0 :(得分:1)
绑定需要DependencyProperty。我会尝试在OneWayToSource
模式下使用Binding并绑定Visibility
属性,使用常见的BooleanToVisibilityConverter转换器
var converter = new BooleanToVisibilityConverter();
var myBinding = new Binding
{
Path = new PropertyPath("IsVisiblePropertyInViewModel"),
Mode = BindingMode.OneWayToSource,
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
Converter = converter
};
BindingOperations.SetBinding(pane, UIElement.Visibility, binding);