如何在ListView中设置SelectedItem之前加载ItemsSource?

时间:2016-11-22 12:21:43

标签: c# mvvm uwp itemssource selectedvalue

我的MVVM页面包含ListView。我绑定ItemSourceSelectedValue,但第一次调用SelectedValue的转换器,然后加载ItemSource

<ListView x:Name="ListViewSurahs"  
              ItemsSource="{Binding MyItems}"
              FlowDirection="LeftToRight"
              Grid.Column="2"
              Grid.Row="4"
              VerticalAlignment="Top"
              HorizontalAlignment="Left"
              HorizontalContentAlignment="Center"
              SelectionMode="Single"
              ScrollViewer.VerticalScrollBarVisibility="Auto"
              DisplayMemberPath="Name"
              SelectedValuePath="ID"
              SelectedValue="{Binding Source={StaticResource CurrentInfo},
                                      Path=Instance.ID,Mode=OneWay}"
              ShowsScrollingPlaceholders="False" />

因为我失去了SelectedItem并且没有选择任何项目。我该怎么做才能先加载ItemsSource

1 个答案:

答案 0 :(得分:0)

首先,您可以尝试在代码隐藏中键入ItemsSource。您必须在xaml文件中添加UserLoaded属性才能执行此操作。但也许我们需要看到你的codebehind和viewmodel。无论如何,您应该尝试将 SelectedValue 绑定模式 OneWay 更改为 TwoWay

之后你应该注意你的装订风格。您必须在 viewmodel 中完成大部分开发进度,之后您可以使用 get-set 从xaml codebehind(.cs)调用viewmodel。所以,你将拥有一个非常干净的绑定结构。

通过这种方式,您可以按以下方式输入,而不是您的输入,

    SelectedValue="{Binding Model.BlaBla, Mode=TwoWay}"

在这里模型是在xaml文件(.cs)的代码隐藏中定义和调用的。例如,在公开密封的部分类

之上
    public YourViewModelName Model { get; set; }

并在同一个文件中公开YourXamlName()

    Model = new YourViewModelName();

这是一个很快的答案,我不确定。但你应该试一试。

祝你好运。