如何将SelectedItem(从ListBox)绑定到变量?

时间:2010-11-12 19:23:32

标签: c# silverlight windows-phone-7

我正在开发我的第一个WP7应用程序,这个问题让我有些头痛。

我有一个像这样定义的ListBox

    <ListBox Grid.Row="1" ItemsSource="{Binding MyItemList}" SelectedItem="{Binding MySelectedItem}">
        <ListBox.ItemTemplate>
            <DataTemplate >
                <StackPanel>
                    <TextBlock Text="{Binding Name}" FontSize="35" />
                    <TextBlock Text="{Binding Details}" FontSize="15"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

绑定ItemsSource工作正常,但选择项目时MySelectedItem-Property不会更新。这个功能没有实现(比如在WPF中)或我只是在做什么? : - )

3 个答案:

答案 0 :(得分:6)

只需使用 -

SelectedItem="{Binding MySelectedItem, Mode=TwoWay}"它应该没问题。

答案 1 :(得分:0)

您可能必须为ListBox设置IsSynchronizedWithCurrentItem="True"

答案 2 :(得分:0)

这是我的解决方法..我希望有人会发布一个更优雅的解决方案。

XAML:

 <ListBox Name="DecksListBox" ItemsSource="{Binding MyItemsList}"
          SelectionChanged="UpdateSelectedItem"

代码隐藏:

    private void UpdateSelectedItem(object sender, SelectionChangedEventArgs e)
    {
        // Ignore if there is no selection
        if (DecksListBox.SelectedIndex == -1)
            return;
        App.ViewModel.MySelectedItem = App.ViewModel.MyItemsList[DecksListBox.SelectedIndex];
    }

也许这可能在此期间帮助某人。