2

WPFでMVVMを使用しています...いくつかのアイテムを含むcheckedlistboxがあります....1つのアイテムがチェックされるたびに、そのアイテムをViewmodelで使用したいです....できるようにするためのプロパティ、コマンド、またはイベントはありますかチェック項目を知るために使用します...

これが私のxamlです...

   <ListBox Grid.Row="9" Height="49" HorizontalAlignment="Left" Margin="0,30,0,0"      Name="aasdasd" VerticalAlignment="Top" Width="205" SelectionMode="Multiple" 
             ItemsSource="{Binding userlist}" Grid.Column="1">
       <ListBox.ItemTemplate>
            <DataTemplate>
                <CheckBox Name="chkuser" Content="{Binding Path=useritem}" IsChecked="{Binding IsChecked,Mode=TwoWay}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

ありがとう

4

2 に答える 2

1

モデルの にバインドしているIsCheckedため、viewModel は単にPropertyChangedそのアイテムのイベントをサブスクライブし、そのプロパティが変更されるたびに必要なアクションを実行できます。

public MyViewModel()
{
    userList.CollectionChanged += userList_CollectionChanged;
}

void userList_CollectionChanged(object sender, CollectionChangedEventArgs e)
{
    if (e.NewItems != null)
        foreach(MyItem item in e.NewItems)
            item.PropertyChanged += MyItem_PropertyChanged;

    if (e.OldItems != null)
        foreach(MyItem item in e.OldItems)
            item.PropertyChanged -= MyItem_PropertyChanged;
}

void MyItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "IsChecked")
    {
        // Do whatever here
    }
}
于 2012-09-26T13:30:04.183 に答える