我有一个 Xamarin.Forms xaml 页面,我在其中使用 ListView 来允许用户从列表中选择一个项目。我已将 ListView 的 SelectedItem 属性绑定到我的 ViewModel 上的一个属性,这工作正常。一旦用户更改所选项目,我的视图模型中的属性也会更新。
但是,即使我最初将 ViewModel 中的属性设置为列表中的值之一,但在页面加载时 ListView 的 SelectedItem 属性为 null,这反过来也将 ViewModel 属性设置为 null。我需要的是另一个方向,我希望 ListView 最初选择我在 VM 属性中设置的项目。
我可以通过在文件背后的代码中编写额外的代码来显式设置初始选定项来组合一个解决方案,但这会引入额外的属性和复杂性,并且非常难看。
设置已选择项绑定到视图模型属性的 ListView 的初始选定项的正确方法是什么?
-编辑-
我被要求提供我用于绑定的代码。这很简单,标准:
<ListView x:Name="myList" ItemsSource="{Binding Documents}" SelectedItem="{Binding SelectedDocument}">
Run Code Online (Sandbox Code Playgroud)
设置为列表视图绑定上下文的视图模型在创建页面之前实例化,如下所示:
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);
} …
Run Code Online (Sandbox Code Playgroud)