2013-02-26 4 views
3

윈도우 스토어 앱을 만들고 있는데 UI 문제로 인해 combobox.I에 체크 박스를 구현해야합니다. 다음과 같은 문제에 봉착했습니다. 체크 된 항목을 " 콤보 박스와 체크 박스 ". 내가하고 싶은 것 : 뒤에 http://blogs.microsoft.co.il/blogs/justguy/image_2827F1EB.png콤보 박스에서 체크 박스를 사용하여 체크 박스 표시

 <ComboBox x:Name="cb2"    

          DropDownOpened="cb2_DropDownOpened_1"   
          DropDownClosed="cb2_DropDownClosed_1" 
          SelectionChanged="cb2_SelectionChanged_1"        
          Width="310" 
          ItemsSource="{Binding Members}" 
          DisplayMemberPath="{Binding Name}" 
          Height="50" BorderBrush="#FF0A2562" 
          Tag="{Binding index}" 

          > 


         <ComboBox.ItemTemplate> 
         <DataTemplate> 

          <CheckBox 
            Background="Black" 
            BorderBrush="Black" 
           Tag="{RelativeSource TemplatedParent}" 
           Content="{Binding Name}" 
           IsChecked="{Binding Path=IsSelected,Mode=OneWay}" 
           Unchecked="CheckBox_Unchecked_1" 
           Click="CheckBox_Click" 
           /> 
         </DataTemplate> 

        </ComboBox.ItemTemplate>      

       </ComboBox> 

코드 :

private void CheckBox_Click(object sender, RoutedEventArgs e) 
    { 

     CheckBox chk = (CheckBox)sender; 


     string k =(string) chk.Content; 

     chkstr.Add(k); 


    } 
private void CheckBox_Unchecked_1(object sender, RoutedEventArgs e) 
    { 
     CheckBox chk = (CheckBox)sender; 
     string k = (string)chk.Content; 

     chkstr.Remove(k); 
     // vl.selectedmembers.Remove(key); 
    } 

답변

0

당신은 ComboBoxItem을 retemplate해야합니다. ComboBox.ItemTemplate 대신 ComboBox.ItemContainerStyle을 지정하십시오. ComboBox.ItemContainerStyle 안에 Template에 대한 설정자가 있어야합니다. 기본 템플릿을 복사하고 CheckBox를 추가하십시오. Template-bind CheckBox.IsChecked를 IsSelected로 설정하거나 선택한 시각적 상태의 객체 애니메이션을 사용하여 IsChecked를 true로 애니메이션화합니다.

IsSelected는 데이터 컨텍스트가 아닌 ComboBoxItem 컨테이너의 속성이기 때문에 접근 방식이 작동하지 않습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 콤보 박스에서 쉼표로 구분하여 표시된 항목을 표시하는 방법. 이 이미지와 같이 [link] (http://blogs.microsoft.co.il/blogs/justguy/image_2827F1EB.png) –

3

Microsoft에서 정의한 표준 템플릿은 ContentPresenter에 TextBlock을 추가합니다. 문자열로 TextBlock의 Text 속성을 바인딩합니다. 이제 항목을 문자열로 명시 적으로 변환하여 선택한 항목을 문자열에 추가 할 수 있습니다. @Patrick : ItemTemplate 및 ItemContainerStyle이 모두 작동합니다.

관련 문제