2014-07-22 52 views
0

我想創建單選按鈕作爲treeviewitem的子對象,但是當我這樣做時,我可以選擇多個單選按鈕。當我選擇1個單選按鈕時,我不能取消選擇它。帶有複選框和單選按鈕的TreeView

的TreeView:

<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); 
    } 
} 

回答

1

您可以爲每個單選按鈕提供組名稱。

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

謝謝你工作:) – user3154369

1

的單選按鈕被而不重置其他人的狀態選擇的原因是,你忘了設置一組爲您創建單選按鈕。

請記住,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); 
    } 

如果這能解決您的問題,請記住標記爲可接受的答案。

+0

謝謝你,你的解決方案工作:)。不幸的是,我可以只接受標記1問題。儘管我已經將你的答案標記爲有用。 – user3154369