簡體   English   中英

帶有復選框和單選按鈕的TreeView

[英]TreeView with check boxes and radio buttons

我想創建單選按鈕作為treeviewitem的子代,但是當我這樣做時,可以選擇多個單選按鈕。 而且,當我選擇1個單選按鈕時,我無法取消選擇它。

樹視圖:

<TreeView Name="tree" Margin="5" Background="LightBlue" ></TreeView>

主窗口:

public partial class MainWindow : Window
{
    private TreeViewItem createCheckBoxInTree(string content, TreeView tree)
    {
        TreeViewItem item = new TreeViewItem()
        {
            Header = new CheckBox()
            {
                Content = content
            }
        };
        tree.Items.Add(item);
        return item;
    }

    private void createRadioButtonsChildren(string content, TreeViewItem item)
    {
        TreeViewItem childRadio = new TreeViewItem()
        {
            Header = new RadioButton()
            {
                Content = content
            }
        };
        item.Items.Add(childRadio);
    }

    public MainWindow()
    {
        InitializeComponent();
        TreeViewItem parent = createCheckBoxInTree("parent", tree);
        createRadioButtonsChildren("child1", parent);
        createRadioButtonsChildren("child2", parent);
        createRadioButtonsChildren("child3", parent);
    }
}

選擇RadioButton而不重置其他狀態的原因是您忘記為創建的RadioButton設置組。

請記住,單選按鈕必須屬於一個組,並且至少要選擇一個。 這就是為什么您不能取消選擇的原因。 將您的cs文件中的代碼更改為下面的代碼,它可以根據需要工作。

    protected string RadioButtonGroupName { get; set; }

    private TreeViewItem createCheckBoxInTree(string content, TreeView tree)
    {
        TreeViewItem item = new TreeViewItem()
        {
            Header = new CheckBox()
            {
                Content = content
            }
        };
        tree.Items.Add(item);
        return item;
    }

    private void createRadioButtonsChildren(string content, TreeViewItem item)
    {
        TreeViewItem childRadio = new TreeViewItem()
        {
            Header = new RadioButton()
            {
                Content = content,
                GroupName = RadioButtonGroupName,
            }
        };
        item.Items.Add(childRadio);
    }

    public MainWindow()
    {
        InitializeComponent();

        RadioButtonGroupName = "MyFirstGroup";

        TreeViewItem parent = createCheckBoxInTree("parent", tree);
        createRadioButtonsChildren("child1", parent);
        createRadioButtonsChildren("child2", parent);
        createRadioButtonsChildren("child3", parent);
    }

如果可以解決您的問題,請記住將其標記為可接受的答案。

您可以為每個單選按鈕指定組名。

 private void createRadioButtonsChildren(string content, TreeViewItem item)
    {
        TreeViewItem childRadio = new TreeViewItem()
        {
            Header = new RadioButton()
            {
                GroupName="Group1",
                Content = content
            }
        };
        item.Items.Add(childRadio);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM