c# - 将布尔值绑定到按钮可见性
问题描述
我已经遵循了这个问题中的两个示例,但是我无法将视图模型中的布尔值绑定到视图中的按钮。我正在使用一个不同的按钮来切换另一个按钮是否应该可见,任何人都可以看到有什么问题吗?
目前我正在尝试将布尔值绑定到按钮的可见性,即使我已经测试过布尔值在真/假之间切换,这也不起作用。我使用的另一种方法是使用数据触发器来更改可见性。我已经注释掉了这个方法,因为它不起作用。
看法
<Button Canvas.Left="300" Canvas.Top="235" Click="ShowEquipmentItems" Cursor="Hand" Visibility="{Binding ShowButtons, Converter={StaticResource BooleanToVisibilityConverter}}">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Content">
<Setter.Value>
<StackPanel>
<Image Source="../Images/Green spot icon.png" Height="35" Width="35" />
</StackPanel>
</Setter.Value>
</Setter>
<Setter Property="Visibility" Value="Collapsed"/>
<!--<Style.Triggers>
<DataTrigger Binding="{Binding ShowButtons}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>-->
</Style>
</Button.Style>
</Button>
<Button Canvas.Right="10" Canvas.Top="388" Command="{Binding ToggleButtonCommand}" Cursor="Hand" Height="50" Width="50" />
查看模型
public class CabinViewViewModel : BindableBase, ICabinViewViewModel
{
public bool ShowButtons { get; set; }
public DelegateCommand ToggleButtonCommand { get; private set; }
public CabinViewViewModel()
{
ToggleButtonCommand = new DelegateCommand(ToggleButtons, CanToggleButtons);
ShowButtons = true;
}
public void ToggleButtons()
{
ShowButtons = !ShowButtons;
System.Console.WriteLine("Toggle Buttons" + ShowButtons.ToString());
}
public bool CanToggleButtons()
{
return true;
}
}
解决方案
显然@mm8 的答案同样有效,但恕我直言,更简洁的方法是像这样使用 BooleanToVisibilityConverter:
<Button Visibility="{Binding ShowButtons, Converter={StaticResource BooleanToVisibilityConverter}}">
也为您节省了大量代码,并且更易于阅读。
推荐阅读
- sql - 查询视图时有没有提高性能的方法?
- react-native - 在 react-native 中向 webService 发送数据
- php - 如果更改特定字段,则不应要求所有必填字段
- configuration - 多域 TYPO3 设置中的不同扩展配置?
- django - 无法将值映射到 Django Rest Serializer 中的不同键
- cakephp - 从电子邮件布局中附加带有 contentId 的文件
- android - Android:具有不同元素大小、可调整大小、可拖动和水平分页的主屏幕
- r - How to loop over several models for survival analysis in R?
- python - 为什么我的 tkinter 窗口随着时间的推移变得越来越迟钝
- javascript - 传单默认控制框的Z-Index?