我的MVVM
页面包含ListView
。我绑定ItemSource
和SelectedValue
,但第一次调用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
?
答案 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();
这是一个很快的答案,我不确定。但你应该试一试。
祝你好运。