C# 如何在TextBox.Triggers(事件触发器)上执行一些操作?
我必须禁用某个按钮 如何使用TextBox.Triggers 有样品吗C# 如何在TextBox.Triggers(事件触发器)上执行一些操作?,c#,wpf,xaml,C#,Wpf,Xaml,我必须禁用某个按钮 如何使用TextBox.Triggers 有样品吗 谢谢你的回复 尽管发布代码示例会很有帮助,并且会提供更好的解决方案,但我仍然可以推荐。差不多 <Button Name="btnFoo" Enabled="{Binding ElementName=txtblkBar, Converter={StaticResource ButtonVisibilityConverter}"/> 虽然发布代码示例会很有帮助,并且会提供更好的解决方案,但我仍然可以
谢谢你的回复 尽管发布代码示例会很有帮助,并且会提供更好的解决方案,但我仍然可以推荐。差不多
<Button Name="btnFoo"
Enabled="{Binding ElementName=txtblkBar, Converter={StaticResource ButtonVisibilityConverter}"/>
虽然发布代码示例会很有帮助,并且会提供更好的解决方案,但我仍然可以推荐。差不多
<Button Name="btnFoo"
Enabled="{Binding ElementName=txtblkBar, Converter={StaticResource ButtonVisibilityConverter}"/>
假设您有一个
文本框
和一个按钮
,当文本框
为空时,您希望禁用按钮
。这可以通过DataTriggers
轻松实现:
<TextBox x:Name="textBox" />
<Button>
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=textBox}" Value="">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
假设您有一个
文本框
和一个按钮
,当文本框
为空时,您想禁用按钮
。这可以通过DataTriggers
轻松实现:
<TextBox x:Name="textBox" />
<Button>
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=textBox}" Value="">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
我假设这与根据文本框是否存在验证错误触发按钮上的Enabled属性有关 如果是这样,您将使用
DataTrigger
测试TextBox.Validation.HasError
属性以查看它是否有任何错误,如果有,请禁用按钮
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="True" />
<DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Validation.HasError" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style>
作为旁注,我对你的另一个问题的评论在这里仍然适用。我个人会在您的
ViewModel
中实现IDataErrorInfo
,并使SaveCommand.CanExecute()
仅在ViewModel.IsValid
时返回true。然后,如果SaveCommand
不应执行,它将自动禁用按钮。我假设这与根据文本框是否存在验证错误触发按钮上的Enabled属性有关
如果是这样,您将使用DataTrigger
测试TextBox.Validation.HasError
属性以查看它是否有任何错误,如果有,请禁用按钮
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="True" />
<DataTrigger Binding="{Binding ElementName=MyTextBox, Path=Validation.HasError" Value="True">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style>
作为旁注,我对你的另一个问题的评论在这里仍然适用。我个人会在您的
ViewModel
中实现IDataErrorInfo
,并使SaveCommand.CanExecute()
仅在ViewModel.IsValid
时返回true。然后,如果SaveCommand
不应该执行,它将自动关闭按钮太好了!!!!我建议你能多写一些关于如何实现ButtonVisibilityConverter的代码吗<代码>返回!IsNullOrEmpty(txtblk.Text)代码>-1,因为您应该为作业使用正确的工具。如果要将值从一种类型转换为另一种类型,请使用转换器。如果要根据条件更改值,请使用DataTrigger
。问题是如何根据条件更改值。因此,您正在使用按钮VisibilityConverter
绑定启用的,并且发布的类名为ColorBrushConverter
,它返回一个bool,我从名称中从未猜到。此外,为什么要依赖向转换器发送文本块?为什么不在XAML中绑定到TextBlock的Text属性,那么转换器就更易于重用。@Cadrell该名称是由于复制粘贴现有代码而导致的键入错误。修正了。太好了!!!!我建议你能多写一些关于如何实现ButtonVisibilityConverter的代码吗<代码>返回!IsNullOrEmpty(txtblk.Text)代码>-1,因为您应该为作业使用正确的工具。如果要将值从一种类型转换为另一种类型,请使用转换器。如果要根据条件更改值,请使用DataTrigger
。问题是如何根据条件更改值。因此,您正在使用按钮VisibilityConverter
绑定启用的,并且发布的类名为ColorBrushConverter
,它返回一个bool,我从名称中从未猜到。此外,为什么要依赖向转换器发送文本块?为什么不在XAML中绑定到TextBlock的Text属性,那么转换器就更易于重用。@Cadrell该名称是由于复制粘贴现有代码而导致的键入错误。修正。谢谢你的意见。谢谢你的意见。你的解决方案是最好的!泰!你的解决方案是最好的!泰!