c# - C# MVVM 切换按钮 IsChecked 绑定
问题描述
我的 MVVM 代码需要将 WPF 切换按钮连接到 ViewModel。
要求是,当“单击”切换按钮时,它会执行更改 IsConnected 属性(布尔)的绑定命令。这个属性应该定义你切换按钮的视觉状态。
一旦我单击切换按钮,实际会发生什么,它会触发绑定命令,但无论 IsConnected 属性值如何,它都会将其视觉状态更改为已检查。我想要的是切换按钮的视觉状态取决于 IsConnected 属性。
如何避免这种竞争条件或防止 Checked 事件触发?
XAML 代码是:
<ToggleButton Name="btnConnect"
DataContext="{Binding someViewModel, Source={StaticResource Locator}}"
IsChecked="{Binding Path=IsConnected, Mode=OneWay}"
Command="{Binding ConnectCommand}">
</ToggleButton>
ViewModel 的快照:
public someViewModel()
{
Task.Factory.StartNew(() => Initialize());
}
public bool IsConnected
{
get
{
return m_bConnected;
}
set
{
Set<bool>(() => this.Connected, ref m_bConnected, value);
}
}
private void Initialize()
{
// Init Motion controller connection
ConnectCommand = new RelayCommand(ConnectMethod);
}
public RelayCommand ConnectCommand
{
get;
private set;
}
public void ConnectMethod()
{
try
{
// When in simulation mode
//m_API.OpenCommSimulator();
m_API.OpenCommEthernet("192.168.0.139", 731);
if (m_API.IsConnected)
Connected = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "CONNECTION ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
解决方案
推荐阅读
- spring - Spring Data 在查询 Cassandra 时使用实体类名而不是 @Table("table_name")
- reactjs - Google 跟踪代码管理器启动得太早?
- php - 使用 php 和 mysql 搜索多个关键字(其中 X 喜欢)设置限制
- mysql - 选择查询中的 MySQL 小计和总计
- python - All decimal places [Python]
- javascript - 根据页面的 onLoad 属性显示/隐藏复选框
- kotlin - 返回类型不匹配的 Kotlin 单行代码
- entity-framework - EF Core 2.1 如何更新相关表中的数据
- azure-devops - 访问其他企业中的组织
- html - 如何将 svg 从文件导入 Angular 5 中的组件?