在1个窗口中有多于1个类型时命名{Binding}

时间:2012-01-15 16:06:04

标签: c# wpf binding

如果在WPF窗口中,参数的{Binding}超过1个,是否可以为它们命名?

例如,对于我(在XAML部分中)的图像:Visibility="{Binding}",还有一些文本框我想要IsEnabled="{Binding}" 有什么方法可以命名吗?那么在背面的代码(.cs方面)中它会选择正确的代码吗?

提前完成。

1 个答案:

答案 0 :(得分:2)

您可以简单地将视图模型包装到单个对象中:

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(here)...或elsewhere上找到这些示例。

然后,您只需将ViewModel的实例设置为表单数据上下文:

public MyForm()
{
    InitializeComponent();
    DataContext = new ViewModel();
}

然后,您可以执行Visibility="{Binding ImagesVisibility}"和文本框IsEnabled="{Binding IsTextBoxEnabled}"等图像绑定。