gpt4 book ai didi

c# - 获取组中的选定单选按钮 (WPF)

转载 作者:太空狗 更新时间:2023-10-29 17:49:58 24 4
gpt4 key购买 nike

我的程序中有一个 ItemsControl,它包含一个单选按钮列表。

<ItemsControl ItemsSource="{Binding Insertions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<RadioButton GroupName="Insertions"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

如何以 MVVM 方式在 group Insertions 中找到选中的单选按钮?

我在 Internet 上找到的大多数示例都涉及设置您在转换器的帮助下将 IsChecked 属性绑定(bind)到的单个 bool 属性。

是否有我可以绑定(bind)到的 ListBox SelectedItem 的等效项?

最佳答案

想到的一个解决方案是将 IsChecked bool 属性添加到您的插入实体,并将其绑定(bind)到单选按钮的“IsChecked”属性。这样您就可以在 View Model 中选中“Checked”单选按钮。

这是一个快速而肮脏的例子。

注意:我忽略了 IsChecked 也可以是 null 的事实,如果需要,您可以使用 bool? 来处理它。

简单的 View 模型

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace WpfRadioButtonListControlTest
{
class MainViewModel
{
public ObservableCollection<Insertion> Insertions { get; set; }

public MainViewModel()
{
Insertions = new ObservableCollection<Insertion>();
Insertions.Add(new Insertion() { Text = "Item 1" });
Insertions.Add(new Insertion() { Text = "Item 2", IsChecked=true });
Insertions.Add(new Insertion() { Text = "Item 3" });
Insertions.Add(new Insertion() { Text = "Item 4" });
}
}

class Insertion
{
public string Text { get; set; }
public bool IsChecked { get; set; }
}
}

XAML - 未显示背后的代码,因为它除了生成的代码外没有其他代码。

<Window x:Class="WpfRadioButtonListControlTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfRadioButtonListControlTest"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:MainViewModel x:Key="ViewModel" />
</Window.Resources>
<Grid DataContext="{StaticResource ViewModel}">
<ItemsControl ItemsSource="{Binding Insertions}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<RadioButton GroupName="Insertions"
Content="{Binding Text}"
IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Window>

关于c# - 获取组中的选定单选按钮 (WPF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4420911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com