【发布时间】:2013-12-30 17:44:20
【问题描述】:
我刚刚在 youtube 上观看了实用的 mvvm 演示视频,如果我理解正确,将逻辑从代码行为转移到视图模型是一种很好的做法,我们应该努力实现这种模式。
考虑到这一点,我有一个简单的问题。在 xaml 中,我有四个单选按钮
<StackPanel x:Name="panel">
<RadioButton GroupName="myGroup" Name="Option1" Content="option one" IsChecked="True" Width="40"/>
<RadioButton GroupName="myGroup" Name="Option2" Content="option two" IsChecked="False" Width="80"/>
<RadioButton GroupName="myGroup" Name="Option3" Content="option three" IsChecked="False" Width="60"/>
</StackPanel>
我想在下面的视图模型中使用此代码来获取选定的收音机 btn。
var checkedValue = panel.Children.OfType<RadioButton>()
.FirstOrDefault(r => r.IsChecked.HasValue && r.IsChecked.Value);
问题是:如何从视图模型访问此面板对象?使用绑定的不是数据。
更新: 正如@Rohit Vatss 所说“不应从 ViewModel 访问视图对象”,我会将问题更改为 How to know which radio button are selected using viewmodel?
【问题讨论】:
-
根据 MVVM 模式 - 不应从 ViewModel 访问视图对象。这违反了 MVVM 模式。
-
@Rohit Vats 谢谢,刚刚更新的问题