【问题标题】:WP7 Listbox - How to ensure selected item is visible via BindingWP7 列表框 - 如何通过绑定确保所选项目可见
【发布时间】:2012-04-01 11:44:10
【问题描述】:

使用 MVVM Light 我有一个列表框数据绑定到多个项目的集合。 其中一项为选中项。

使用此代码,它可以完美运行,并且 ViewModel 结构已正确更新:

 <Name="listBox1"
 ItemsSource="{Binding Path=Models}"
 SelectedItem="{Binding Path=csProfile.Model, Mode=TwoWay}">

我的问题是,当我进入页面时,如果所选项目不在第一个项目中,则它是不可见的,并且用户不知道之前的选择是什么。

如何强制列表框始终显示所选项目?

可能通过属性或绑定。

M

【问题讨论】:

    标签: windows-phone-7 data-binding listbox mvvm-light


    【解决方案1】:

    我认为您正在寻找 ScrollIntoView 方法。这里讨论了一个类似的话题: Automatic Scrolling in a Silverlight List Box

    API 参考在这里:http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview(VS.95).aspx

    在所选项目上调用 ScrollIntoView 之前调用 UpdateLayout() 似乎是必要的。

    【讨论】:

    • 我尝试添加以下代码:private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { listBox1.UpdateLayout(); listBox1.ScrollIntoView(listBox1.SelectedItem ); } 但它不起作用
    • 我找到了一个解决方法:我将更新放在 continer 控件的事件中。
    【解决方案2】:

    没有可以绑定的属性来设置可见的内容。而是在 ListBox 内的 ScrollViewer 上调用 ScrollToVerticalOffset()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      相关资源
      最近更新 更多