【问题标题】:TreeView with RadioButtons带有 RadioButtons 的 TreeView
【发布时间】:2014-01-23 14:06:20
【问题描述】:

我需要在我的 WPF 项目中使用动态节点创建来创建 TreeView。 TreeView 节点有一个条件。所有叶子都必须包含单选按钮,其工作逻辑与单选按钮组相同。

我有这个 XAML 代码,它描述了树视图数据模板:

<HierarchicalDataTemplate x:Key="sko_ver_hdt">
        <RadioButton Margin="0,0,10,0" Content="{Binding Version}"/>
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate x:Key="sko_hdt"
                              ItemTemplate="{StaticResource sko_ver_hdt}"
                              ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>

我尝试使用 CollectionViewSource 对 TreeView 的节点进行分组,如下所示:

<CollectionViewSource x:Key="cvs" Source="{Binding SKOs}">
        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="Version"/>
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>

但什么也没发生。

我有一个描述树视图数据的模型:

internal class SKOVM
{
    public SKOVM(DBCommunication.SKO sko)
    {
        Name = sko.Name;
        Version = sko.VersionCode;
        Id = sko.Id;
        Children = new ObservableCollection<SKOVM>(sko.SKO1.Select(x => new SKOVM(x)));
        sko.SKOSystemInformationReference.Load();
        if (sko.SKOSystemInformation != null)
            Version = String.Format("{0} / {1}", Version, sko.SKOSystemInformation.Designer);
    }

    public long Id { get; set; }

    public string Name { get; set; }
    public string Version { get; set; }

    public ObservableCollection<SKOVM> Children { get; set; }
}

有什么想法可以为我的树视图叶节点实现分组单选按钮行为逻辑吗?

提前致谢。

【问题讨论】:

  • 如果回答对您的问题有帮助,请采纳,以便将该问题标记为已回答。

标签: c# wpf xaml treeview


【解决方案1】:

您是否尝试过使用RadioButton.GroupName property?:

<HierarchicalDataTemplate x:Key="sko_ver_hdt">
    <RadioButton Content="{Binding Version}" GroupName="{Binding GroupName}" />
</HierarchicalDataTemplate>

此属性获取或设置指定哪些 RadioButton 控件互斥的名称。因此,您需要子项目类中的一个属性,其中每个组的子项目将具有相同的值。通过这种方式,您可以将该值数据绑定到GroupName 属性,并且每个子项的RadioButton 应该在它们各自的组中工作。

【讨论】:

  • 非常感谢。你真的帮了我。一切都按我的计划进行。
  • @SergeyKosivchenko,不客气,欢迎来到 StackOverflow。我可以先提请您注意Help Center 中的What should I do when someone answers my question? 页面吗?其次,如果您想充分利用本网站,我建议您花一些时间浏览帮助中心的其他页面。它们充满了有用的信息。
猜你喜欢
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
相关资源
最近更新 更多