WPF RadioButton单选框绑定 Binding
2021/8/13 6:38:29
本文主要是介绍WPF RadioButton单选框绑定 Binding,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
单个 CheckBox
XAML:
<Window.DataContext> <local:VMTempTest/> </Window.DataContext> <Grid> <StackPanel Margin="10,0,0,50"> <TextBlock Text="单选框" FontWeight="Bold" Margin="0,5,0,5" ></TextBlock> <DockPanel x:Name="RadioButton" > <StackPanel DockPanel.Dock="Left" > <RadioButton Content="{Binding SingleRadio}" IsChecked="{Binding IsSingleRadioCheck}" HorizontalAlignment="Left" > </RadioButton> </StackPanel> <StackPanel DockPanel.Dock="Right" Margin="20 0 0 0" Orientation="Horizontal" VerticalAlignment="Center"> <TextBlock Text="{Binding IsSingleRadioCheck,StringFormat='结果:\{0\}'}" ></TextBlock> </StackPanel> </DockPanel> </StackPanel> </Grid>
ViewModel:
public class VMTempTest : ViewModelBase { private String singleRadio; /// <summary> /// 单选框相关 /// </summary> public String SingleRadio { get { return singleRadio; } set { singleRadio = value; RaisePropertyChanged(() => SingleRadio); } } private Boolean isSingleRadioCheck; /// <summary> /// 单选框是否选中 /// </summary> public Boolean IsSingleRadioCheck { get { return isSingleRadioCheck; } set { isSingleRadioCheck = value; RaisePropertyChanged(() => IsSingleRadioCheck); } } }
说明:注意这边使用到了两个属性: SingleRadio,IsSingleRadioCheck,一个用于显示单选框内容,一个用于表示是否选中
组合单选框
XAML:
<Window.DataContext> <local:VMTempTest/> </Window.DataContext> <Grid> <StackPanel Margin="20"> <TextBlock Text="组合单选框" FontWeight="Bold"></TextBlock> <DockPanel x:Name="GroupRadioButton" > <StackPanel DockPanel.Dock="Left"> <ItemsControl ItemsSource="{Binding RadioButtons}"> <ItemsControl.ItemTemplate> <DataTemplate> <RadioButton Content="{Binding Content}" IsChecked="{Binding IsCheck}" GroupName="RadioButtons" Command="{Binding DataContext.RadioCheckCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ItemsControl}}"> </RadioButton> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </StackPanel> <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="{Binding RadioButton.Content,StringFormat='结果:\{0\}'}" ></TextBlock> </StackPanel> </DockPanel> </StackPanel> </Grid>
Models:
public class CompBottonModel : ObservableObject { public CompBottonModel() { //构造函数 } private String content; /// <summary> /// 单选框相关 /// </summary> public String Content { get { return content; } set { content = value; RaisePropertyChanged(() => Content); } } private Boolean isCheck; /// <summary> /// 单选框是否选中 /// </summary> public Boolean IsCheck { get { return isCheck; } set { isCheck = value; RaisePropertyChanged(() => IsCheck); } } }
ViewModel:
public class VMTempTest : ViewModelBase { public VMTempTest() { RadioButtons = new List<CompBottonModel>() { new CompBottonModel(){ Content="苹果", IsCheck = false }, new CompBottonModel(){ Content="香蕉", IsCheck = false }, new CompBottonModel(){ Content="梨", IsCheck = false }, new CompBottonModel(){ Content="樱桃", IsCheck = false }, }; } private List<CompBottonModel> radioButtons; /// <summary> /// 组合单选框列表 /// </summary> public List<CompBottonModel> RadioButtons { get { return radioButtons; } set { radioButtons = value; RaisePropertyChanged(() => RadioButtons); } } private CompBottonModel radioButton; /// <summary> /// 组合单选框 选中值 /// </summary> public CompBottonModel RadioButton { get { return radioButton; } set { radioButton = value; RaisePropertyChanged(() => RadioButton); } } private RelayCommand radioCheckCommand; /// <summary> /// 单选框命令 /// </summary> public RelayCommand RadioCheckCommand { get { if (radioCheckCommand == null) radioCheckCommand = new RelayCommand(() => ExcuteRadioCommand()); return radioCheckCommand; } set { radioCheckCommand = value; } } private void ExcuteRadioCommand() { RadioButton = RadioButtons.Where(p => p.IsCheck).First(); } }
这边使用了 ItemsControl,可以根据模板来定义内容,我们在模板中放置我们需要用到的内容。这边需要注意的是:GroupName 用一样的,来代表这是一个单选控件组合。
这边有是三个属性进行绑定相关:
RadioButtons:单选框列表数据(循环绑定);Content:单选框显示的内容;IsCheck:单选框的是否选中。
参考:
https://www.cnblogs.com/wzh2010/p/6425060.html
这篇关于WPF RadioButton单选框绑定 Binding的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?