1

Extended WPF Toolkit 2.0.0を使用してCheckListBox. そのためのチェックボックス項目を設計する必要がありますが、何らかの理由で が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-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit' に存在しません

これを解決するにはどうすればよいですか?

4

1 に答える 1

3

を使用するだけListBoxItemです。コントロール (および ItemsContainer から派生したCheckListBoxコントロール) は、独自の項目クラスを定義する必要はありません。ContentControl から派生した任意のクラスを使用できますが、ListBoxItemIsSelected などの便利なプロパティを提供します。

より良い解決策は、CheckListBoxを独自のクラスのコレクションにバインドし、バインディングをクラスのプロパティに設定することです。実際、これはコントロール自体の説明に示されていCheckListBoxます。SelectedItemsOverride代わりに、選択したアイテムのリストにバインドする必要があることに注意してくださいSelectedItems

たとえば、MainWindow.xaml.cs に次のものがあるとします。

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

CheckBoxList次のように作成できます。

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

項目をチェック/チェック解除するたびに、JustSelectedItems から追加または削除されます。

通常、各コントロールに正しい DataContext を設定する MVVM フレームワークを使用しますが、この単純な例では、フォーム自体にバインドするように単純に指示しました。

于 2013-10-17T11:21:38.660 に答える