Binding Button.Enabled для нескольких свойств - PullRequest
4 голосов
/ 23 октября 2010

Мне нужно, чтобы одна кнопка была включена только тогда, когда два других свойства были установлены в значение, отличное от нуля. Я мог бы сделать это вручную, но мне интересно, есть ли способ сделать это, используя класс привязки .net. Я использую .net 4.0, работая с Windows Forms.

Ответы [ 2 ]

3 голосов
/ 23 октября 2010

Нет, я не верю, что это возможно в приложении WinForms.Привязка WinForms - это сопоставление 1: 1 между исходным объектом и свойством для элемента данных в целевом объекте.

Простой способ обойти эту проблему - создать третье свойство, которое просто выполняет проверку, которую вы пытаетесь выполнить, и создать привязку к этому свойству.

public object Property1 {get; set;}
public object Property2 {get; set;}
public bool Property3
{
    get { return Property1 != null && Property2 != null; }
}
0 голосов
/ 23 октября 2010

Свяжите ваше свойство Button.IsEnabled и используйте IMultiValueConverter ..., который вы можете затем возвращать true только тогда, когда ваши значения не равны нулю.

<Button.IsEnabled>
    <MultiBinding Converter="{StaticResource MyConverter}">
        <Binding Property1 />
        <Binding Property2 />
    </MultiBinding>
</Button.IsEnabled>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...