2014-07-22 3 views
0

radioviews를 treeviewitem의 자식으로 만들고 싶습니다.하지만 이렇게하면 둘 이상의 라디오 버튼을 선택할 수 있습니다. 1 라디오 버튼을 선택하면 선택을 취소 할 수 없습니다.체크 박스와 라디오 버튼이있는 TreeView

트 리뷰 :

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

MainWindow를 :

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

감사합니다. Unfortunatelly 나는 1 마크 만 수락 할 수 있습니다. 귀하의 답변을 유용하다고 표시했습니다. – user3154369

관련 문제