C# WPF 单选按钮拆分到不同的页面

标签 c# wpf radio-button

我正在使用设计器(非常新手)和 C# 作为支持代码来开发 WPF (XAML)。

我需要能够在同一组中拥有几个单选按钮“页面”(即单击第 1 页上的项目 A,然后单击第 2 页上的 B 应取消选择第 1 页上的 A)。 enter image description here

我该如何去做呢?

谢谢!

请注意,“按钮”实际上只是图像上方的单选按钮。

最佳答案

首先,我不建议这样做。作为用户,如果我在一个页面上的选择影响了前一个页面上的选择,我会感到非常困惑/惊讶。

至于如何实现它,我假设您正在使用 MVVM(就像在 WPF 中一样)。首先,每个页面的 ViewModel 需要引用模型中相同的支持属性。换句话说,您的模型具有如下属性(其中 MyRadioSelection 是您要绑定(bind)到的某个枚举):

public MyRadioSelection GlobalSelection {get; set;}

并且您的 View 模型具有:

public MyRadioSelection UserSelection
{
   get {return Model.GlobalSelection;}
   set
   {
       Model.GlobalSelection = value;
       OnPropertyChanged(UserSelection);
   }
}

然后您只需要一个 ValueEquals 转换器(来自此 answer ),将所有单选按钮绑定(bind)到枚举,然后就可以开始了!

如果您需要进一步解释,请告诉我。另外,发布您现有的代码将有助于改进这个答案。另请注意,您的模型可能需要某种方式来通知 ViewModels 对支持属性的外部(另一个 ViewModel)更改。您可以从多个方向解决此问题,但只需实现 INotifyPropertyChanged 并在 ViewModel 中监听它就可以了。

关于C# WPF 单选按钮拆分到不同的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22305205/

相关文章:

wpf - 如何在底部/右侧正确放置按钮?

c# - 查询拦截 - 处理诊断监听器

c# - 需要使用 Linq 将列表转换为不同列表的帮助

c# - 如何在不使用触摸屏的情况下模拟触摸事件

c# - 如何格式化绑定(bind)的 wpf 数据网格文本列以不显示新的 DateTimes?

c# - Xamarin.Forms RadioButtons 文本不可见

ASP.Net RadioButton 在 RadioButtonList 中的可见性

django - django 内联表单集的单选按钮

c# - 在程序中运行 gcc 的安全、跨平台方式

C# 看不到mysql数据库