我正在测试WPF和绑定。 我有一个演示,它可以在代码隐藏中完成我的绑定。
这是我的XAML代码和C#代码。
<Window x:Class="WpfApplication1.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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dgrdMaGrid" />
<Button x:Name="button" Content="Quitter" HorizontalAlignment="Left" Margin="355,268,0,0" VerticalAlignment="Top" Width="155" Height="44" Click="button_Click"/>
</Grid>
c#:
public partial class MainWindow : Window
{
public ObservableCollection<Individu> listeIndividus = new ObservableCollection<Individu>();
public MainWindow()
{
InitializeComponent();
// Load data to display
listeIndividus = loadDummyData();
// Build the binding
dgrdMaGrid.DataContext = this;
dgrdMaGrid.ItemsSource = listeIndividus;
}
我想知道如何更改我的XAML代码以获得相同的结果,但是通过在XAML中进行绑定。
我知道我应该使用ItemsSource =&#34; {Binding listeIndividus}&#34;,但这还不够......
<Window x:Class="WpfApplication1.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:WpfApplication1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dgrdMaGrid" ItemsSource="{Binding listeIndividus}"/>
<Button x:Name="button" Content="Quitter" HorizontalAlignment="Left" Margin="355,268,0,0" VerticalAlignment="Top" Width="155" Height="44" Click="button_Click"/>
</Grid>
提前感谢您的提示
文森特
答案 0 :(得分:1)
你说“//构建绑定”,那不是绑定。您没有创建Binding
类的实例。这只是一项任务,差异很重要。
好的,讲座,现在修复你的代码。
首先,您不能绑定到字段,只能绑定到属性。所以listeIndividus
需要一个吸气剂:
public ObservableCollection<Individu> listeIndividus { get; } = new ObservableCollection<Individu>();
其次,这个是一个Binding
,但你没有一个viewmodel,所以它不会按原样运行。对于名为Window.DataContext
的属性,此绑定将查看listeIndividus
。由于Window.DataContext
为null,因此无法找到它。 Window.DataContext
是视图模型,如果有的话。
<DataGrid x:Name="dgrdMaGrid" ItemsSource="{Binding listeIndividus}"/>
告诉它在哪里真正看 - 关于Window本身:
<DataGrid
x:Name="dgrdMaGrid"
ItemsSource="{Binding listeIndividus, RelativeSource={RelativeSource AncestorType=Window}}"
/>