Xaml 为什么在设置ComboBox.SelectedIndex时出现异常?
我正在努力学习绑定和XAML。我有一个非常简单的示例,其中我将字符串数组绑定到XAML中定义的组合框。我还想设置所选索引 我得到一个例外: 值不在预期范围内 使用SelectedIndex属性 这里是我的XAML,用于UWP应用程序Xaml 为什么在设置ComboBox.SelectedIndex时出现异常?,xaml,data-binding,uwp,winrt-xaml,Xaml,Data Binding,Uwp,Winrt Xaml,我正在努力学习绑定和XAML。我有一个非常简单的示例,其中我将字符串数组绑定到XAML中定义的组合框。我还想设置所选索引 我得到一个例外: 值不在预期范围内 使用SelectedIndex属性 这里是我的XAML,用于UWP应用程序 以及背后的代码 公共密封部分类主页面:第页 { 私有字符串[]组合字符串={“一”、“二”、“三”}; 公共列表组合字符串 { 获取{返回新列表(组合字符串);} } 公共主页() { this.InitializeComponent(); DataContex
以及背后的代码
公共密封部分类主页面:第页
{
私有字符串[]组合字符串={“一”、“二”、“三”};
公共列表组合字符串
{
获取{返回新列表(组合字符串);}
}
公共主页()
{
this.InitializeComponent();
DataContext=this;
BrowserCombo.SelectedIndex=1;
}
已加载私有无效页面(对象发送方,路由目标e)
{
//BrowserCombo.SelectedIndex=1;
}
}
我希望它非常简单,所以没有MVVM-我仍然需要学习这个概念
备注:
似乎XAML WinRt和XAML-WPF之间的项目列表填充方式不同。访问SelectedIndex属性的最早点是什么?您会遇到此异常,因为当您尝试设置
BrowserCombo.SelectedIndex=1时,您的ItemsSource仍然为空代码>在页面的构造函数中。您正在使用x:Bind
-如果调试生成的MainPage.g.cs文件并在其中放置一些断点:
公共无效加载(全局::Windows.UI.Xaml.FrameworkElement src,对象数据)
{
这是初始化();
}
公共无效初始化()
{
如果(!this.initialized)
{
这个.Update();
}
}
公共无效更新()
{
this.Update_u(this.dataRoot,而不是_);
this.initialized=true;
}
您将看到加载事件中正在解析x:Bind
——这解释了为什么在构造函数中ItemsSource中仍然有null
另一件事是,对于旧绑定,当您设置DataContext=this时,它将被解析
,但是您使用的是x:Bind
,实际上您不需要设置DataContext,它在这里不会改变任何东西。如果用ItemsSource=“{Binding ComboStrings}”
替换ItemsSource=“{Binding ComboStrings}”
则代码应该可以工作,否则可以删除行DataContext=this代码>
另一件有趣的事情是,XAML中已定义绑定的顺序也可能导致类似的问题-例如,如果您这样定义组合框:
然后,您还将获得异常-在设置集合之前,正在解析exception-SelectedIndex。与工作正常的情况相反: