Я хотел бы подойти к этой проблеме с помощью MVVM.
Обычно при работе с Button
установить Command
свойство в XAML ...
<Button Command="{Binding MyCommand}" Content="Click Me"/>
и в вашей модели представления у вас есть ICommand
, связанный с ним.
public class MyViewModel
{
private ICommand _myCommand;
public ICommand MyCommand
{
get
{
if (_myCommand== null)
{
_myCommand = new RelayCommand(
p => this.CanMyCommandExecute(),
p => this.MyCommandExecute()
}
return _myCommand;
}
}
}
Вы видите, что вы создаете экземпляр ICommand
в вашей модели представления и написать код для CanExecute
метода там тоже. Метод CanExecute
возвращает bool, который сообщает, может ли команда выполнить в текущих условиях.
WPF будет автоматически отключить или включить кнопку, связанную с ICommand
в зависимости от того, возвращает ли метод CanExcute true
или false
.
В методе CanExecute вы можете написать код, который учитывает значения нескольких других связанных свойств вашей модели представления, а затем возвращает true из false.
Допустим, у вас есть 3 TextBox
элементов управления и 3 строковых значения в вашей модели. В методе CanExecute вы проверяете значения этих трех свойств строк и возвращаете true или false. После этого кнопка будет включена или отключена.
Вы можете использовать [MultiBinding] (https://msdn.microsoft.com/de-de/library/system.windows.data.multibinding (v = vs.110).aspx) – ckruczek
http://stackoverflow.com/questions/6468160/make-button-enabled-disabled-depending-on-the-textbox-text-property-in-wpf – Vinoth
@ckruczek у него нет разных текстовых полей, он имеет itemControl с textBoxes, не то же самое. –