1

Contentアイテムにチェックボックスが含まれるリストボックスがあります:ユーザーが選択したすべてのチェックボックスの文字列を取得したい

            <ListBox Name="SendCodecsNamelistBox"
                     Height="52"
                     Margin="150,128,31,65"
                     ItemsSource="{Binding .}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding Path=.}" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
4

2 に答える 2

2

このようなモデルを定義できます

public class Model
{
    public string Content { get; set; }
    public bool IsSelected { get; set; }
}

チェックボックスにバインドします

        <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Content="{Binding Path=Content}" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
            </DataTemplate>
        </ListBox.ItemTemplate>

        var data = new List<Model>()
        {
            new Model{ Content = "item1", IsSelected = false},
            new Model{ Content = "item2", IsSelected = false},
            new Model{ Content = "item1", IsSelected = false},
            new Model{ Content = "item3", IsSelected = false}
        };

        SendCodecsNamelistBox.ItemsSource = data;

次に、このように必要なものを取得できます

var selectedContents = data.Where(i => i.IsSelected)
                           .Select(i => i.Content)
                           .ToList();
于 2012-08-08T03:36:43.997 に答える
0

そのため、WPF と MVVM は結合されています。には何でも入れることができるのでItemsTemplate、チェックされた項目に関する情報を GUI から直接取得するのは面倒です。

ListBoxプロパティを持つビューモデルのコレクションにバインドし、IsCheckedそのプロパティをバインドすると、コレクションCheckBox.IsCheckedからチェックされたアイテムが取得されます。

于 2012-08-08T03:35:09.317 に答える