Запретить работу кнопки wpf, если определенное значение равно false

У меня есть кнопка, которая должна показать некоторое содержимое, если name_checked вернуть истину

• C#:

private bool name_checked    = false;  // <<--------#

private string username      = "Smith"; 
private string message       =   null; 

public MainWindow() {           

     if (username == "Josh"){ 
         name_checked = true; // <<--------# if right true
         message      =  "Welcome Josh";        
} 

private void button__Click(object sender, RoutedEventArgs e) {  

    if ( name_checked == true ) MessageBox.Show(message);
}

• wpf xaml:

<Button Name="anyname" Click="button__Click"  
Width="100" Height="50" HorizontalAlignment="Right" 
Margin="0,4,154,0" VerticalAlignment="Top" Grid.Row="2" Grid.RowSpan="2" />

Output─ Ошибка вывода: (InvalidOperationExction was unhandled)

То, что я хочу: остановить действие кнопки, если логическое значение name_checked вернуть ложь
я не хочу, чтобы какое-либо сообщение показывалось вообще, если логическое значение возвращает false, даже ошибки

  • так я использую это правильно или нет??, если нет, пожалуйста, покажи мне правильный путь.

2 ответа

Решение

Установите bool в вашей ViewModel (CodeBehind)

public bool OkToContinue { get; set; }  

Затем в XAML сделайте это:

<Button IsEnabled="{Binding OkToContinue}"  Click="ButtonBase_OnClick" />

Когда OkToContinue==false, кнопка будет отключена, в противном случае она будет включена.

+ Изменить message показать по умолчанию, когда это не Джош. Такие как:

private string message = "Unknown";

Чтобы не иметь нулевого указателя. string.Empty может работать так же.

Другие вопросы по тегам