3

私はWindowsストアアプリを構築しています.UIの問題により、コンボボックス内にチェックボックスを実装する必要があります.次の問題で立ち往生しています:チェックされたアイテムを「チェックボックス付きコンボボックス」に表示したい. やりたいこと : 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);
    }
4

2 に答える 2

3

Microsoft によって定義された ComboBox Standard Template で、ContentPresenter に TextBlock を追加します。TextBlock の Text プロパティを文字列にバインドします。アイテムを明示的に文字列に変換することで、チェックされたアイテムを文字列に追加できます。@Patrick : ItemTemplate と ItemContainerStyle の両方が機能します。

于 2013-03-20T10:13:04.830 に答える
0

ComboBoxItem を再テンプレート化する必要があります。ComboBox.ItemTemplate の代わりに ComboBox.ItemContainerStyle を指定します。ComboBox.ItemContainerStyle 内に、Template のセッターを用意します。デフォルトのテンプレートをコピーして、CheckBox を追加します。テンプレートで CheckBox.IsChecked を IsSelected にバインドするか、オブジェクト アニメーションを Selected 表示状態で使用して IsChecked を true にアニメーション化します。

IsSelected はデータ コンテキストではなく、ComboBoxItem コンテナーのプロパティであるため、このアプローチは機能しません。

于 2013-02-26T23:33:25.873 に答える