2013-10-17 3 views
0

CheckListBox을 디자인 할 때 Extended WPF Toolkit 2.0.0을 사용하고 있습니다. 내가 그것에 대해 체크 박스 항목을 디자인해야하지만, 어떤 이유로, CheckListBoxItem 존재하지 않습니다. 또는 적어도 내 프로젝트는 어디에서나 참조를 찾을 수 없습니다. 그건 재밌 네요. 왜냐하면 this tutorial이이를 잘 사용하기 때문에 정상적으로 작동하는 것 같습니다. 나는 그것이 다른 버전일지도 모른다고 생각하고 있었다. 그렇다면 왜 그것을 제거 할 수 있었 을까?확장 된 WPF Toolkit의 CheckListBoxItem이 없습니다.

다음은 내 코드의 조각입니다 :

<Window x:Class="MyProject.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:xctkToolkit="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"> 
    <Grid> 
     <xctkToolkit:CheckListBox Name="m_myCheckBox"> <!-- Works fine --> 
      <xctkToolkit:CheckListBox/> <!-- Doesn't work --> 
     </xctkToolkit:CheckListBox> 
    </Grid> 
</Window> 

그리고 난 내 프로젝트에 종속 Xceed.Wpf.Toolkit을 추가했습니다. 내가 오류는 다음과 같습니다

오류 MC3074 : 태그 'CheckListBoxItem는'XML 네임 스페이스에 'CLR-네임 스페이스 : Xceed.Wpf.Toolkit, 조립 = Xceed.Wpf.Toolkit'이 (가) 없습니다

어떻게 해결할 수 있습니까?

답변

2

그냥 ListBoxItem을 사용하십시오. CheckListBox 컨트롤 (및 모든 ItemsContainer 파생 컨트롤)은 자체 항목 클래스를 정의 할 필요가 없습니다. ContentControl에서 파생 된 클래스를 사용할 수 있지만 ListBoxItem은 IsSelected와 같은 유용한 속성을 제공합니다.

더 나은 해결책은 CheckListBox을 자신의 클래스 모음에 바인딩하고 클래스의 속성에 바인딩을 설정하는 것입니다. 실제로 이것은 in the description of the CheckListBox control itself으로 표시됩니다. 그냥 내가 이런 CheckBoxList를 만들 수 있습니다 나는 내 MainWindow.xaml.cs를

public MainWindow() 
{ 
    DataContext = this; 
    MyItems = new List<string> { "a", "b", "c" }; 
    JustSelectedItems = new List<string>(); 
    InitializeComponent();    
} 

을 다음 사항을 가정하고, 대신 예를 들어 SelectedItems

의 선택 항목의 목록에 SelectedItemsOverride을 바인드 할 필요가 있습니다 :

<xctk:CheckListBox 
    ItemsSource="{Binding MyItems}" 
    SelectedItemsOverride="{Binding JustSelectedItems}" /> 

때마다 내가/체크가 추가되거나 JustSelectedItems에서 제거 항목을 선택 취소합니다.

일반적으로, 각 컨트롤에 대한 올바른 DataContext를 설정할 것 인 MVVM 프레임 워크를 사용하는 것이지만,이 간단한 예를 들어 내가 간단한 자체에

+0

감사를 결합하는 형태 말했다, 단지'ListBoxItem' 작동합니다. 나는 그것을 'DataContext'에 바인딩하는 것에 대한 다른 질문을 가지고 있습니다. 그렇게하면 어떻게'ListBoxItem'에 접근 할 수 있습니까? 왜냐하면 나는 당신의 예제를 시도한 후'CheckListBox.Items'는 문자열의 배열을 반환합니다. 어떻게하면 "b"체크 상자를 지금 비활성화 할 수 있습니까? – Yellow