2010-10-23 4 views
4

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

+0

Какие рамки вы используете? WPF, ASP, Winforms и т. Д. – Val

+0

Только что отредактировал мой вопрос. – Juan

ответ

3

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

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

public object Property1 {get; set;} 
public object Property2 {get; set;} 
public bool Property3 
{ 
    get { return Property1 != null && Property2 != null; } 
} 
+0

И тогда я предполагаю, что мне нужно реализовать функцию Property1_or_Property2Changed() ', чтобы все знали, что она изменилась, чтобы кнопка могла обновить ее свойство« Включено »? – Juan

0

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

<Button.IsEnabled> 
    <MultiBinding Converter="{StaticResource MyConverter}"> 
     <Binding Property1 /> 
     <Binding Property2 /> 
    </MultiBinding> 
</Button.IsEnabled> 
+1

Извините, я не использую WPF. Виноват. – Juan