0

次のテンプレートを使用してチェック リスト ボックスを作成しています。

<Style x:Key="CheckBoxListStyle" TargetType="{x:Type ListBox}">
            <Setter Property="SelectionMode" Value="Multiple"></Setter>
            <Setter Property="ItemContainerStyle">
                <Setter.Value>
                    <Style TargetType="{x:Type ListBoxItem}" >
                        <Setter Property="Margin" Value="2" />
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ListBoxItem}">
                                    <CheckBox IsChecked="{Binding Path=xxxxxxxxxxx,RelativeSource={RelativeSource TemplatedParent},Mode=TwoWay}">                                                                             <ContentPresenter></ContentPresenter>
                                    </CheckBox>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Setter.Value>
            </Setter>
        </Style>

 <ListBox Style="{StaticResource CheckBoxListStyle}" ItemsSource="{Binding Path=Configuration.ProductTypes}" DisplayMemberPath="ProductName" />  

私の問題は、データベースからすべての製品タイプを取得し、それをリスト ボックスの項目ソースにバインドしていることです。属する製品タイプのリストを含む製品クラスがあります。製品の製品タイプ リストに基づいて、チェック ボックスの IsChecked プロパティを設定する必要があります。通常、1 つ以上のチェック ボックスの IsChecked プロパティを設定する必要があります。商品は 1 つ以上の商品タイプに属している可能性があります。選択モードは複数選択です。ユーザーが追加の製品タイプのチェックボックスをオンにした場合..チェックされたリストボックスの合計を取得してデータベースに保存する必要があります...これはMVVM WPFアプリケーションです...このシナリオを解決する方法についてのアイデア
...コントロール テンプレートのパスは IsChecked ですか?

ありがとうレイ

質問を簡単にしましょう。チェックボックスとテキストブロックを備えたリスト ボックスが必要です。テキストブロックのデータ コンテキストが異なり、チェック ボックスのデータ コンテキストが異なります。つまり、彼らはさまざまなオブジェクトからデータを取得します。これを達成する方法がわかりません...

4

2 に答える 2

2

質問を簡単に説明します。チェックボックスとテキストブロックを備えたリストボックスが必要です。テキストブロックのデータコンテキストが異なり、チェックボックスのデータコンテキストが異なります。つまり、さまざまなオブジェクトからデータを取得します。これを達成する方法がわかりません...

2つのデータコンテキスト(Model1とModel2)を含む新しいクラス(ViewModel)を作成し、それにデータをバインドします。これはMVVMパターンとも呼ばれます。

于 2009-12-15T23:56:49.113 に答える
0

ListBox にバインドする ProductType クラスには、バインドできる IsSelected または IsChecked という読み取り/書き込みプロパティが必要です。次に、ControlTemplate を使用する代わりに、ListBox.ItemTemplate で DataTemplate を使用し、CheckBox の IsChecked プロパティをそのプロパティにバインドします。

于 2009-11-28T05:46:38.137 に答える