绑定到 ListView 的 SelectedItem 属性时设置初始选定项

2024-01-07

我有一个 Xamarin.Forms xaml 页面,其中使用 ListView 允许用户从列表中选择单个项目。我已将 ListView 的 SelectedItem 属性绑定到 ViewModel 上的属性,效果很好。一旦用户更改所选项目,我的视图模型中的属性也会更新。

但是,即使我最初将 ViewModel 中的属性设置为列表中的值之一,当页面加载时,ListView 的 SelectedItem 属性为 null,这反过来又将 ViewModel 属性设置为 null。 我需要的是另一个方向,我希望 ListView 最初选择我在 VM 属性中设置的项目。

我可以通过在代码隐藏文件中编写额外的代码来显式设置初始选定项来组合解决方案,但这会引入额外的属性和复杂性,并且非常难看。

设置 ListView 的初始选定项(其选定项绑定到 viewmodel 属性)的正确方法是什么?

-EDIT-

我被要求提供用于绑定的代码。 这非常简单、标准:

<ListView x:Name="myList" ItemsSource="{Binding Documents}" SelectedItem="{Binding SelectedDocument}">

设置为列表视图绑定上下文的视图模型被实例化before页面已创建,如下所示:

public class DocumentSelectViewModel : ViewModelBase
{
    private Document selectedDocument;

    public List<Document> Documents
    {
        get { return CachedData.DocumentList; }
    }

    public Document SelectedDocument
    {
        get { return selectedDocument; }
        set { SetProperty(ref selectedDocument, value); 
    }

    public DocumentSelectViewModel()
    {
        SelectedDocuement = CachedData.DocumentList.FirstOrDefault();
    }
}

SetProperty 是一个函数,如果新值与旧值不同(经典绑定代码),它会简单地触发 INotifyPropertyChanged 事件。


我对 XAML 有点生疏,但是您不需要进行双向绑定吗?

E.G.

{ Binding SelectedDocument, Mode=TwoWay }

只要 SelectedDocument 属性更改引发 INotifyPropertyChanged 事件,您就应该获得所需的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定到 ListView 的 SelectedItem 属性时设置初始选定项 的相关文章

  • Silverlight 4relativeSourceFindAncestor绑定[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Silverlight 4中会有Re
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • 仅当单击复选框时才更改 ListViewItem 的选中状态

    默认情况下 双击 ListViewItem 会切换其选中状态 我只想通过单击项目的复选框或在突出显示项目时按空格键来更改选中状态 这容易做到吗 该解决方案涉及 3 个事件和 1 个 bool 类型的状态变量 private bool inh
  • 如何从 main 之外的类访问 XAML 对象?

    如果我尝试 var mainpage new Mainpage 我将运行主页构造函数 然后 XAML 对象中的所有字段都将返回 null 如何在 silverlight 中访问来自不同类但属于同一命名空间的 XAML 对象 让我通过例子来解
  • WinRT 中的当前文化是错误的

    我正在尝试使用 WinRT 中的当前文化来格式化日期时间值 但CurrentCulture属性似乎并不尊重系统文化 我尝试了以下两个属性 System Globalization CultureInfo CurrentCulture Dis
  • 如何替换 TabAdapter 中选项卡之一的片段?

    虽然我意识到嵌套片段不是一个选择 但我仍然有一个问题 我根本无法找出答案 我正在使用 ActionBarSherlock 的 FragmentsTabPager 示例创建一个界面 在该界面中可以通过滑动而不是单击选项卡来翻阅选项卡 我的问题
  • 使用仪器分配时 iOS 应用程序冻结

    当我想使用 Instruments Allocation 来分析应用程序的内存使用情况时 它在启动后立即冻结 它总是停留在启动屏幕 这是一个 Xamarin forms 应用程序 这是屏幕截图 其他信息 如果我创建一个新项目 然后使用 In
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 如何在 WPF 中设置窗口边框和标题栏的样式? [复制]

    这个问题在这里已经有答案了 我们正在开发一个 WPF 应用程序 它使用 Telerik 的控件套件 一切正常且看起来很好 不幸的是 我们最近需要替换所有对话框的基类 将 RadWindow 更改为标准 WPF 窗口 原因与本讨论无关 通过这
  • 菜单项内的 Windows 10 UWP 应用菜单弹出菜单

    是否可以在菜单弹出项目内添加菜单弹出项目
  • Xamarin.Forms:独立于平台的应用程序菜单

    我正在编写 Xamarin Forms 桌面应用程序 最终希望以 MacOS 和 Windows 为目标 Xamarin Forms 是否有任何独立于平台的机制可用于构建应用程序菜单 即您可以在其中找到 文件 编辑 查看 等的菜单 并且出现
  • 如何在 WPF 中设置覆盖全局样式的特定控制元素设置?

    我通过应用程序范围的资源字典为应用程序中的按钮定义了全局样式 样式如下所示 来自另一个 SO 示例
  • 如何更改 Xamarin.Forms(便携式)应用程序中的 PCL 配置文件

    我只是想知道如何使用 Visual Studio 2015 Update 2 更改 Xamarin 中的 PCL 配置文件 在安装某些软件包时 我收到一条错误消息 该软件包与 PCL 配置文件 259 不兼容 先感谢您 右键单击 PCL 项
  • 应如何在 WinForms GUI 控件和客户端类之间同步数据?

    什么方法被认为是保持 GUI 控件内的数据结构与应用程序维护的数据结构同步的 标准 例如 在 WinForms 中 如果创建一个 ListView 实例 而不是将其指向表示要出现在列表中的项目的数据结构 则必须以编程方式实例化 ListVi
  • Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

    我有一个带有相关面板的页面 可以根据宽度重新组织 但是 除非宽度 gt 720px 否则它似乎不会在加载时应用任何状态 如果我在加载页面后调整页面大小 则两种状态都有效 解决方法是检查加载页面上的窗口大小并手动选择状态 但我相信这应该自动处
  • 使用 VSTest 代替 MSTest 运行单元测试用例

    我在 TFS2010 服务器上有一个 x64 平台 C 解决方案 VS2012 我已将一个单元测试项目 也是 x64 附加到此解决方案并创建了一个构建定义 当我对构建进行排队时 它成功了 但单元测试用例不会被执行 这是因为 MSTest 是
  • 将 Combobox 控件绑定到 DataGrid 中的单独源

    我尝试在 DataGrid 中使用 ComboBox 这将允许用户选择来自不同表的值 我使用 ViewModel 类作为 DataContext 其中包含一个用于终端的 ObservableCollection 和另一个用于 Termina
  • 如何将 onClick 侦听器附加到应用程序小部件上的列表视图项

    我喜欢向列表视图的每个项目添加一个 onClick 侦听器 但我尝试过的方法都不起作用 这是我的 RemoteViewsFactory public class MyRemoteViewsFactory implements RemoteV
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • WPF:绑定到 ControlTemplate 中的命令

    我正在尝试向自定义 ListView MyListView 添加一个按钮 该按钮会触发 MyListView 中定义的命令 MyCustomCommand 我通过应用 ControlTemplate 添加了按钮 和标题文本 问题是我还没有找

随机推荐