C# 在1个窗口上有多于1个类型时命名{Binding}
如果在WPF窗口中,一个参数有多个{Binding},是否可以命名它们 例如,对于我拥有的图像(在XAML部分):C# 在1个窗口上有多于1个类型时命名{Binding},c#,wpf,binding,C#,Wpf,Binding,如果在WPF窗口中,一个参数有多个{Binding},是否可以命名它们 例如,对于我拥有的图像(在XAML部分):Visibility=“{Binding}”但也在一些我想创建的文本框上IsEnabled=“{Binding}” 有什么办法给他们命名吗?这样,在背面的代码(.cs侧)中,它将选择正确的一个 Thanx。您只需让视图模型将这些属性包装到单个对象中即可: public class ViewModel : INotifyPropertyChanged { private boo
Visibility=“{Binding}”
但也在一些我想创建的文本框上IsEnabled=“{Binding}”
有什么办法给他们命名吗?这样,在背面的代码(.cs侧)中,它将选择正确的一个
Thanx。您只需让视图模型将这些属性包装到单个对象中即可:
public class ViewModel : INotifyPropertyChanged
{
private bool imagesVisibility;
private bool isTextBoxEnabled;
public event PropertyChangedEventHandler PropertyChanged;
public bool ImagesVisibility
{
get { return this.imagesVisibility; }
set
{
this.imagesVisibility = value;
this.PropertyChanged(this,
new PropertyChangedEventArgs("ImagesVisibility"));
}
}
public bool IsTextBoxEnabled
{
// ... similar as with ImagesVisibility property implementation
}
}
注意,您还需要一个布尔到可见性转换器,您可以在StackOverflow()上找到它的示例。。。或者
然后,只需将ViewModel
的实例设置为表单数据上下文:
public MyForm()
{
InitializeComponent();
DataContext = new ViewModel();
}
然后你可以做图像绑定,比如
Visibility=“{binding ImagesVisibility}”
和textboxIsEnabled=“{binding IsTextBoxEnabled}”
,看起来这会起作用,会深入研究并让你知道我是否能让它起作用:)嗯,好的,我想我现在把它都设置好了,呃。。现在如何在代码中调用它啊,是的。对不起,我还在学习c#和WPF的第一阶段。它确实工作得很完美。但是,如果(例如)我现在想再次启用所有文本框,我应该使用什么呢。我现在可以用一个命令来完成,对吗?@Dante:是的,这可以用一个命令来完成。所有这些命令都必须将ViewModel.IsTextBoxEnabled
属性更改为true
。然后,由于INotifyPropertyChanged
接口更改将传播到所有绑定项(本例中为文本框)并相应更新。我也是这么想的,但当我在方法中输入“ViewModel.IsTextBoxEnabled=true”时,它会在错误框中返回:非静态字段method需要对象引用,或属性“WpfApplication1.ViewModel.IsTextBoxEnabled.get”