【发布时间】:2011-03-31 06:41:54
【问题描述】:
我正在使用 MVVM 架构开发 WPF 应用程序...
到目前为止一切都很好。
我遇到了绑定可见性问题。如果可以的话,我想尽量减少在后面的代码中编写代码,但如果它是必需的,那么我不介意这样做。
我有一个 ViewModel。该模型公开了一个布尔值和 2 个命令。一个连接命令、一个断开连接命令和一个 DeviceCurrentlyConnected Bool。
基本上我决定制作 2 个按钮,但按钮的可见性基于布尔值。
所以我在这方面遇到了困难。我尝试了很长时间的带触发器的样式。
<Button Visibility="Hidden" Content="{x:Static UIStrings:ClientStrings.DeviceBar_DisconnectCommandName}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="{Binding ElementName=this.Content, Path=DesiredHeight}" Margin="10" Name="Disconnect" Command="{Binding DisconnectCurrentDeviceCommand}">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding DataCotext.DeviceConnected, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
我根本无法使用样式。
基本上我想要的功能是:
DeviceConnected = 假: 显示一个按钮,其中包含内容 Connect 和绑定到 ConnectCommand 的命令。
DeviceConnected = 真: 显示一个按钮,其中包含内容断开连接和绑定到 DisconnectCommand 的命令。
当当前没有设备连接时显示按钮并绑定到连接设备,当设备连接时显示按钮,该按钮绑定到断开命令并说出单词disconnect。
【问题讨论】:
-
绑定是
{Binding DataCotext.DeviceConnected ...}还是拼写错误?即,不是{Binding DataContext.DeviceConnected ...}。 -
您的权利。它应该是数据上下文。我的实际代码是正确的:P.
标签: wpf data-binding