【发布时间】:2011-08-17 16:47:08
【问题描述】:
我在使用单选按钮组时遇到了很多麻烦。最初,单选按钮不会从 ViewModel 设置值,而是在正确选择功能时设置。所以基本上用户不知道什么是初始值。
这是我的 xaml。
<ListBox ItemsSource="{Binding ViewModelCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="rbList" IsChecked="{Binding Path=IsReady,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<Label Content="{Binding Path=NameOfRadioButton}"></Label>
</RadioButton>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是我的视图模型
public bool IsReady
{
get
{
return BusinessObject.IsReady; // debuggin on this line shows a true value being returned
}
set
{
BusinessObject.IsReady = value;
OnPropertyChanged("IsReady");
}
}
Viewmodel 是一个简单的布尔值,它实现了 INotifyPropertyChanged。 我怀疑我可以使用枚举转换器,因为单选按钮的数量总是动态的。
所以为了澄清一下,在第一次运行时没有选择单选按钮,但在单击单选按钮后工作正常。视图模型和底层数据库反映了所做的更改。
如何让单选按钮在启动时显示值?
干杯。
【问题讨论】:
-
您需要显示创建视图模型时的附加代码。根据您所说的猜测,我会说 bool 在启动时没有设置值,所以默认为 False。
-
抱歉,它是从业务对象中获取的,调试显示了一个真正的值。我将更新代码以显示这一点。
-
好的。截至目前,我已将单选按钮更改为复选框。这并没有真正给我想要的功能,但至少它在数据加载时显示了正确选择的项目。
标签: c# wpf data-binding mvvm radio-button