gpt4 book ai didi

c# - 管理按钮的 IsEnabled 属性

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:59 24 4
gpt4 key购买 nike

我的程序中有一个 xaml 窗口,它有一个名为“保存”的按钮和一个 textBox。我还有一个用于此窗口的 ViewModel。在 ViewModel 中,textBox 有一个 string 属性,按钮上的 IsEnabled 有一个 bool 属性。我希望仅当 textBox 中有文本时才启用该按钮。

xaml:

<Button IsEnabled="{Binding SaveEnabled}" ... />
<TextBox Text="{Binding Name}" ... />

ViewModel 属性:

//Property for Name
public string Name
{
get { return _name; }
set
{
_name = value;
NotifyPropertyChange(() => Name);

if (value == null)
{
_saveEnabled = false;
NotifyPropertyChange(() => SaveEnabled);
}
else
{
_saveEnabled = true;
NotifyPropertyChange(() => SaveEnabled);
}
}
}

//Prop for Save Button -- IsEnabled
public bool SaveEnabled
{
get { return _saveEnabled; }
set
{
_saveEnabled = value;
NotifyPropertyChange(() => SaveEnabled);
}
}

我想我的主要问题是,我应该把关于这个问题的代码放在哪里?正如您在上面看到的,我试图将它放入 Name 属性的 setter 中,但没有成功。

最佳答案

你可以这样做:

public string Name
{
get { return _name; }
set
{
_name = value;
NotifyPropertyChanged(() => Name);
NotifyPropertyChanged(() => SaveEnabled);
}
}

public bool SaveEnabled
{
get { return !string.IsNullOrEmpty(_name); }
}

编辑:将此添加到您的 xaml:

<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}">...</TextBox>

关于c# - 管理按钮的 IsEnabled 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com