Windows phone 7 列表框内的复选框未触发WP7中的selectionchanged事件

Windows phone 7 列表框内的复选框未触发WP7中的selectionchanged事件,windows-phone-7,Windows Phone 7,我有一个列表框,里面有一个复选框,复选框里面有一个文本框。ListBox的ItemSource绑定在视图模型中。我正在尝试调用selectionchanged事件,但它未触发 因此,我采取了当我选中复选框时触发的操纵完成事件。但我在本次活动中未获得所选项目。但奇怪的是,若我在listbox的复选框中选择textbox,selectionchanged事件不会被触发。你能帮我解释一下为什么它不工作吗。下面是同样的XAML <ListBox x:Name="allcontacts" Horiz

我有一个列表框,里面有一个复选框,复选框里面有一个文本框。ListBox的ItemSource绑定在视图模型中。我正在尝试调用selectionchanged事件,但它未触发

因此,我采取了当我选中复选框时触发的操纵完成事件。但我在本次活动中未获得所选项目。但奇怪的是,若我在listbox的复选框中选择textbox,selectionchanged事件不会被触发。你能帮我解释一下为什么它不工作吗。下面是同样的XAML

<ListBox x:Name="allcontacts" HorizontalAlignment="Stretch"
                                     Margin="0,5,-12,0"  Width="800" Grid.Row="1" 
                                     SelectionChanged="allcontacts_SelectionChanged"                                     
                                     ItemsSource="{Binding ContactsList,Mode=TwoWay}"
                                     ManipulationCompleted="contacts_ManipulationCompleted">
                                        <ListBox.ItemTemplate>
                                            <DataTemplate>
                                                <StackPanel Orientation="Horizontal">
                                                    <CheckBox x:Name="chkGroup" 
                                          IsChecked="{Binding IsChecked,Mode=TwoWay}"
                                          VerticalAlignment="Top">
                                                        <StackPanel Orientation="Horizontal">
                                                            <Image x:Name="imgFriend" 
                                                        Source="{Binding ImageUri}" 
                                                        Height="30" 
                                                        Width="30"
                                                        Margin="0 0 0 0"/>
                                                            <TextBlock x:Name="txtfrdName" 
                                                        Text="{Binding Name,Mode=TwoWay}"/>
                                                        </StackPanel>
                                                    </CheckBox>
                                                </StackPanel>
                                            </DataTemplate>
                                        </ListBox.ItemTemplate>
                                    </ListBox>


ContactsList是Friend类的可观察集合,Friend类包含绑定到CheckBox和Textbox的IsChecked和Name属性。

您应该订阅CheckBox元素的
Checked和
Unchecked
事件,而不是ListBox的SelectionChanged:

<CheckBox x:Name="chkGroup" 
    IsChecked="{Binding IsChecked,Mode=TwoWay}"
    Checked="HandleCheck" 
    Unchecked="HandleUnchecked"
    VerticalAlignment="Top">

更多信息请点击此处:

谢谢您的回答。但当用户选中复选框时,我希望列表框中的项。选中事件未在列表框中提供我项目。请告诉我,当用户选中/取消选中复选框时,我是否可以获得选中的项目,或者我是否可以订阅selectionchanged事件。您应该使用触发选中事件的复选框的DataContext属性。我编辑了我的答案,告诉你怎么做。
private void HandleCheck(object sender, RoutedEventArgs e)
{
    CheckBox cb = sender as CheckBox;
    if (cb != null)
    {
        var selectedItem = cb.DataContext;
        // do your stuff
    }
}