Присвоение имени {Binding}, если у вас более 1 типа в 1 окне - PullRequest
0 голосов
/ 15 января 2012

Если в окне WPF для параметра имеется более 1 {Binding}, можно ли их назвать?

Например, для изображений, которые у меня есть (в части XAML): Visibility="{Binding}", но также для некоторых текстовых полей, которые я хочу сделать IsEnabled="{Binding}" Есть ли способ назвать их? Так что в коде на задней стороне (сторона .cs) он выберет правильный?

Спасибо заранее.

1 Ответ

2 голосов
/ 15 января 2012

Вы можете просто иметь модель представления, упаковывающую эти свойства в один объект:

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}" и текстовое поле IsEnabled="{Binding IsTextBoxEnabled}".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...