我有一个带有属性的 View 模型:
public class MyModel
{
public bool IsEnabled {get;set;}
}
我想使用这个属性来切换按钮状态。如果 bool 值为真,我想隐藏按钮,否则显示它。
我试过这样的事情:
<Button Visibility= "{Binding IsEnabled ? Hidden : Visible }">Enable</Button>
但这不合适。
我尝试了一些更复杂的解决方案,但我猜我遗漏了一些微不足道的东西。
有什么建议吗?
最佳答案
因为你想在 Hidden
和 Visible
之间切换并且 true 是隐藏的,你可以编写自定义 IValueConverter
或使用简单的 Style .触发器
<Button Content="Enable">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsEnabled}" Value="True">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
这一切都假设 DataContext
已相应设置,并且 MyModel.IsEnabled
会在发生更改时引发 INotifyPropertyChanged.PropertyChanged
事件
public class MyModel : INotifyPropertyChanged
{
private bool _isEnabled;
public bool IsEnabled
{
get { return _isEnabled; }
set
{
_isEnabled = value;
OnPropertyChanged("IsEnabled");
}
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
关于c# - 如何对 Visibility 属性进行简单的 XAML (WPF) 条件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30172392/