我有以下ComboBox:
<ComboBox SelectedItem="{Binding SelectedTheme, Mode=TwoWay}"
ItemsSource="{Binding Themes, Mode=OneTime}" />
它绑定到我的VM中的以下值:
private Theme _selectedTheme;
public Theme SelectedTheme
{
get { return _selectedTheme; }
set
{
if (_selectedTheme != value)
{
_selectedTheme = value;
OnPropertyChanged();
}
}
}
public List<Theme> Themes =>
Enum.GetValues(typeof(Theme)).Cast<Theme>().ToList();
我在VM的ctor中设置了SelectedTheme
的值,并且在我将VM实例分配给get
的{{1}}后,Page
成员被点击了。我的麻烦是我第一次加载页面时UI没有反映绑定值;它更新在所有其他时间都能正常工作,但组合框在最初加载页面后没有显示任何选择。
答案 0 :(得分:6)
在解决了这个问题大约两个小时之后,我意识到UWP框架按照它们设置的顺序连接绑定,因此正确设置了DataContext
,但是在{SelectedItem
时清除了ItemsSource
1}}值已设置。将我的XAML更改为以下内容可以解决问题:
<ComboBox ItemsSource="{Binding Themes, Mode=OneTime}"
SelectedItem="{Binding SelectedTheme, Mode=TwoWay}" />