正如我的帖子所暗示的,我在 StackOverflow 上看到了一个帖子,用于在 xaml 中的 TextBox 文本为空时禁用按钮。但问题是,只要用户在不输入任何字符的情况下按空格键,按钮就会启用。如果 xaml 本身的 TextBox 中只有空格而没有任何文本,是否可以禁用该按钮。
<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>
最佳答案
与使用按钮单击事件相比,我更喜欢使用 Command 属性并提供实现 ICommand 的类的 MVVM 方法。界面。然后,此类可以通过该接口(interface)的 CanExecute 和 CanExecuteChanged 部分指示它是否启用,这将启用和禁用按钮。但是,您只是在单击事件后面编写代码,所以...
添加一个新的转换器类。 (它只是一个实现 IConverter 接口(interface)的类。)然后在绑定(bind)中使用转换器。
// 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 的适当资源部分(例如,对于窗口或用户控件)声明转换器,如下所示:
<yourNamespace:IsNullOrWhiteSpaceConverter x:Key="IsNullOrWhiteSpaceConverter" />
那么你的绑定(bind)就变成了……
IsEnabled="{Binding ElementName=txtReasonForChange,Path=Text,
Converter={StaticResource IsNullOrWhiteSpaceConverter}}"
关于c# - 当文本框为空或来自 xaml 的空格时禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54338167/