【发布时间】:2015-09-25 22:00:54
【问题描述】:
我正在尝试学习 WPF 和绑定,但似乎无法理解发生了什么。我已经使用组合框复制了一个代码示例,并一直在尝试修改它以查看会发生什么。问题似乎与设置数据上下文有关。如果我在 InitializeComponent(); 之后设置它与 DataContext = this;一切都很好。但是,我无法让示例与任何其他 DataContext 设置一起使用。我试过了
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Name="_this" DataContext="{Binding ElementName=_this}"
我的组合框中没有数据。
后面的代码是:
cbItems = new ObservableCollection<ComboBoxItem>();
var cbItem = new ComboBoxItem { Content = "All" };
SelectedItem = cbItem;
cbItems.Add(cbItem);
var items = (from a in dc.Counties
select a.CountyName).ToList();
foreach (var item in items)
{
//cbItems.Add(cbItem);
cbItems.Add(new ComboBoxItem{Content = item});
}
xaml 是
<ComboBox x:Name="ComBoCounty" HorizontalAlignment="Left" Margin="44,38,0,0" VerticalAlignment="Top"
Width="120" ItemsSource="{Binding cbItems}" SelectedItem="{Binding SelectedcbItem}"
Loaded="ComBoCounty_OnLoaded" SelectionChanged="ComBoCounty_OnSelectionChanged" Height="20" />
我使用 ReSharper,它给了我一个错误指示,并为 DataContext 值提供了建议。我已经尝试了所有这些,但我的组合框中没有数据。这似乎是要理解的最基本的事情之一,我花了很多时间试图理解它。如果有人可以向我展示一种无需在 xaml 中设置 DataContext 就可以工作的方法,以及为什么它可以工作,我将不胜感激。
【问题讨论】:
-
你要设置什么样的DataContext?另一个班级? DC 适用于整个 Xaml,除非您明确更改它。您可以检查 VS 中的输出窗口是否存在绑定错误(在运行应用程序时)?
-
这个问题的完美答案在这里:stackoverflow.com/questions/25549826/…
标签: c# wpf xaml combobox datacontext