Отключить кнопку, когда текстовое поле пусто или пробелы в xaml - PullRequest
0 голосов
/ 24 января 2019

Как подсказывает мой пост, я увидел здесь пост в StackOverflow, чтобы отключить кнопку, когда TextBox Text пуст от xaml.Но проблема в том, что всякий раз, когда пользователь нажимает пробел без ввода символов, кнопка активируется.Можно ли отключить кнопку, если в TextBox в самом xaml есть только пустые места без текста.

<TextBox x:Name="txtReasonForChange" Grid.Row="0" Grid.Column="1" TextWrapping="Wrap" ScrollViewer.VerticalScrollBarVisibility="Auto"></TextBox>
 <Button x:Name="btnSaveOrSaveAs" Grid.Row="2" Grid.Column="1" IsEnabled="{Binding ElementName=txtReasonForChange,Path=Text.Length}" HorizontalAlignment="Right" Click="btnSaveOrSaveAs_Click"></Button>

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Вместо того, чтобы использовать событие нажатия кнопки, я бы предпочел MVVM-подход с использованием свойства Command и предоставления класса, который реализует интерфейс ICommand . Этот класс может затем указать, включен ли он или нет, через части CanExecute и CanExecuteChanged этого интерфейса, которые будут включать и отключать кнопку. Тем не менее, вы просто делаете код для события click, так что ...

Добавить новый класс конвертера. (Это просто класс, реализующий интерфейс IConverter .) Затем используйте преобразователь в привязке.

 // In your converter class, which you could call IsNullOrWhiteSpaceConverter
 public object Convert(object value, Type targetType,
     object parameter, System.Globalization.CultureInfo culture)
 {
      var input = (string)value;
      return String.IsNullOrWhiteSpace(input);
 }

Объявите конвертер в соответствующем разделе ресурсов XAML (например, для окна или usercontrol) следующим образом:

<yourNamespace:IsNullOrWhiteSpaceConverter x:Key="IsNullOrWhiteSpaceConverter" />

Тогда твоя привязка становится ...

IsEnabled="{Binding ElementName=txtReasonForChange,Path=Text,
    Converter={StaticResource IsNullOrWhiteSpaceConverter}}"
0 голосов
/ 24 января 2019

Конвертер, кажется, самый простой / лучший способ MVVM.
Id также предлагает использовать простое настраиваемое текстовое поле , которое не принимает пробел (настраивайте по мере необходимости)
И отключить с помощью триггеров ~

0 голосов
/ 24 января 2019

Я не думаю, что это возможно только под Xaml. У меня есть два способа подразумевать это требование, но все они нуждаются в коде.

1.При использовании MVVM вы можете отключить кнопку с помощью команды. 2. Привязка свойства IsEnable кнопки к Textbox.Text, через конвертер для проверки текстовое поле Texther.Text - только пустой символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...