Команда связывания WPF - PullRequest
       3

Команда связывания WPF

0 голосов
/ 11 ноября 2010

У меня есть следующий флажок:

<dxe:CheckEdit Margin="2,0" IsChecked="{Binding SelectedContact.isMajor,Mode=TwoWay,Converter={StaticResource CheckBoxNullToFalse}}">More than 18</dxe:CheckEdit>

Вот чего я хочу достичь: когда пользователь нажимает на флажок, я хочу вызвать функцию, но также назначить поле isMajor.

Единственный способ, которым я вижу, как это сделать, это привязать команду, которая будет выполнять обе операции

Есть ли более простой способ?
Спасибо
Джон

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Если честно, использование Команды - это первое, что пришло мне в голову.Я предполагаю, что dxe:CheckEdit является некоторым вариантом CheckBox - вы можете найти ToggleButton полезным, в качестве альтернативы, в зависимости от того, какое поведение вы ищете.

Я не уверен, что вы подразумеваете под "просто »(минимум кода, легче понять и т. д.), но привязка IsChecked к свойству isMajor (согласно @Thomas Levesque) и привязка к команде ( Relay или Delegate, например) вызов функции обеспечивает чистый способ сделать обе вещи, которые вы хотите, без введения побочных эффектов в ваш код, как если бы вы вызывали функцию из установщика свойств или из вашего Converter, дляНапример, это не было бы очевидно для других разработчиков.Или вам, когда вы вернетесь, чтобы поддерживать это через год.:)

1 голос
/ 11 ноября 2010

Сделайте isMajor свойством, а не полем, и вызовите метод в установщике

private bool _isMajor;
public bool IsMajor
{
    get { return _isMajor; }
    set
    {
        _isMajor = value;
        OnPropertyChanged("IsMajor");
        DoSomething();
    }
}
...