c# - 在 WPF 中更改 DecimalUpDown 中的值时如何不启用按钮
问题描述
我有两个 DecimalUpDown。
最大之一和最小之一。
如果最小值大于最大值,则不应启用该按钮。
XAML
<tool:DecimalUpDown Name="min" Value="0.00" />
<tool:DecimalUpDown Name="Max" Value="0.00" />
<Button x:Name="Aplly" IsEnabled="{Binding MaxSmallerMin, UpdateSourceTrigger=PropertyChanged}" Content="Aplly" >
C#
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public bool MaxSmallerMin
{
get {
if (min.Text != "" && max.Text != "")
if (Convert.ToDouble(min.Text) <= Convert.ToDouble(max.Text))
return true;
return false;
}
}
但这并没有改变。
解决方案
您必须告诉 GUI 您的MaxSmallerMin
属性已更改。您可以使用该INotifyPropertyChanged
界面来执行此操作。当min.Text
或max.Text
发生变化时,您必须调用相应的事件。您的代码可能如下所示:
C#:
class MainWindow : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public bool MaxSmallerMin
{
get {
if (min.Text != "" && max.Text != "")
if (Convert.ToDouble(min.Text) <= Convert.ToDouble(max.Text))
return true;
return false;
}
}
private void textChangedEventHandler(object sender, TextChangedEventArgs args)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MaxSmallerMin)));
}
}
XAML:
<tool:DecimalUpDown Name="min" TextChanged="textChangedEventHandler" Value="0.00" />
<tool:DecimalUpDown Name="Max" TextChanged="textChangedEventHandler" Value="0.00" />
推荐阅读
- vba - 简单问题 - 范围对象 - 查找感兴趣单词的粗体版本
- java - Kotlin 中方法的返回类型应该是什么,该方法的值可以为 null 并且将从 Java 中调用?
- amazon-web-services - How to fix `user must specify LSN` when using AWS DMS for Postgres RDS
- javascript - Stack Navigator in React Native. Error "undefined is not an object (evaluating this.props.navigation)"
- typescript - 如何在 Typescript 中反转映射枚举值
- c# - 组合框列表在用户输入期间从数据库中添加项目
- iis - 将经典 asp 网站从 IIS 6.0 迁移到 IIS 10
- ansible - 如何在同一台服务器上像 cp 命令一样运行 linux ..但是副本说它找不到远程服务器
- bash - Tmux 打开 4 个窗格并将每个窗格设置为特定目录
- ruby - 我在第 13 行收到一个错误。它说 `<<` 方法未定义。我该如何解决?我正在使用红宝石