【发布时间】:2017-02-02 16:00:52
【问题描述】:
这可能是一个愚蠢的问题,但我不能用 ItemsSource 做一个简单的例子。我的 XAML:
<Window x:Class="TestDataGrid.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestDataGrid"
mc:Ignorable="d" Height="250" Width="300" Name="MyWindow">
<ListBox ItemsSource="{Binding MyItems, ElementName=MyWindow}" Background="{Binding MyBrush, ElementName=MyWindow}"/>
</Window>
代码:
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private ObservableCollection<Item> items;
public MainWindow()
{
InitializeComponent();
items = new ObservableCollection<Item>();
items.Add(new Item { Key = "Key1", Value = "Value1" });
items.Add(new Item { Key = "Key2", Value = "Value2" });
items.Add(new Item { Key = "Key3", Value = "Value3" });
}
public ObservableCollection<Item> MyItems
{
get { return items; }
}
public Brush MyBrush
{
get { return Brushes.LightPink; }
}
}
public class Item
{
public string Key { get; set; }
public string Value { get; set; }
}
如果我在代码中设置 ItemsSource,或者如果我设置 DataContext=this 然后从绑定中删除 ElementName,它会起作用。但为什么它不适用于 ElementName?
我可以像这样绑定背景颜色,但不能绑定集合。
我知道如何使其与 DataContext 或代码隐藏一起工作,但我对为什么这个特定示例不起作用感兴趣,我是否遗漏了什么?
【问题讨论】: