为什么我不能在Bindings中直接使用ObservableCollection
本文关键字:ObservableCollection 不能 Bindings 为什么 | 更新日期: 2023-09-27 18:21:14
我想知道为什么我不能从MainWindow.xaml.直接使用ObservableCollection
代码:
public partial class MainWindow : Window
{
public ObservableCollection<DummyData> tmpLst = new ObservableCollection<DummyData>();
public ObservableCollection<DummyData> Dummy
{
get { return tmpLst; }
}
private void CreateDummy()
{
for (int x = 1; x < 10; x++)
{
tmpLst.Add(new DummyData() { text = ("DummyData =" + x), wert = x });
}
}
public MainWindow()
{
InitializeComponent();
CreateDummy();
}
}
Xaml:
<Window x:Class="WpfApplication2.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:WpfApplication2"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid Name="testGrid" AutoGenerateColumns="True"
DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
ItemsSource="{Binding tmpLst}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
</DataGrid>
</Grid>
Xaml-作品:
<DataGrid Name="testGrid"
AutoGenerateColumns="True"
DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
ItemsSource="{Binding Dummy}"/>
如果我使用了Dummy而不是tmpLst,那么网格会向我显示数据,也许我错过或忘记了什么?
要使绑定正常工作,必须使用Property,而不是公共字段。
WPF中有一个概念叫做依赖属性。
房地产在WPF中占有极其重要的地位。
很少有好的链接:
数据绑定常见问题
Scott的DataBinding教程
你什么都没错过。
绑定引擎要求绑定目标为属性。绑定到字段永远不会起作用。