正如我的帖子所建议的那样,当TextBox Text从xaml中为空时,我在StackOverflow上看到了一个禁用按钮的帖子。但是问题是,只要用户按下空格而不键入任何字符,该按钮就会启用。如果xaml iteself的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>
答案 0 :(得分:1)
我认为仅暗示Xaml是不可能的。 我有两种暗示这种需求的方法,但是它们都需要代码。
1。使用MVVM时,可以通过命令禁用按钮。 2.将按钮的IsEnable属性绑定到Textbox.Text,通过转换器进行检查 另外Textbox.Text只是空字符。
答案 1 :(得分:1)
我更喜欢使用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的相应“资源”部分(例如,针对窗口或用户控件)中声明转换器,如下所示:
<yourNamespace:IsNullOrWhiteSpaceConverter x:Key="IsNullOrWhiteSpaceConverter" />
然后您的绑定变为...
IsEnabled="{Binding ElementName=txtReasonForChange,Path=Text,
Converter={StaticResource IsNullOrWhiteSpaceConverter}}"
答案 2 :(得分:1)
转换器似乎是最简单/最佳的mvvm方法。
ID还建议您使用不接受空格的简单custom textbox(根据需要自定义)
并禁用使用触发器〜