wpf 如何将ItemsControl.ItemsSource与XAML中的属性绑定?

hl0ma9xz  于 2023-03-09  发布在  其他
关注(0)|答案(4)|浏览(161)

我有一个简单的窗口:

<Window x:Class="WinActivityManager"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ListView x:Name="lvItems" />
    </Grid>
</Window>

以及后面的相关代码:

public partial class WinActivityManager : Window
{
    private ObservableCollection<Activity> Activities { get; set; }

    public WinActivityManager()
    {
        Activities = new ObservableCollection<Activity>();
        InitializeComponent();
    }

    // Other code ...
}

如果我在窗口构造函数中编写以下绑定:

lvItems.ItemsSource = Activities;

那么当我在Activities中添加或删除元素时,我的ListView会自动更新。

应如何用XAML编写绑定?

我试过了,但不管用:

<ListView x:Name="lvItems" ItemsSource="{Binding=Activities}" />

如何在XAML中实现这一点?

xoshrz7s

xoshrz7s1#

杰西·詹姆斯说的是真的,但还不够。
你得把

private ObservableCollection<Activity> Activities { get; set; }

作为

public ObservableCollection<Activity> Activities { get; set; }

并且绑定应该是:

<ListView x:Name="lvItems" ItemsSource="{Binding Path=Activities}" />

此致,

gab6jxml

gab6jxml2#

您必须像其他人回答的那样将DataContext设置为this,但是您也可以设置DataContextxaml

<Window x:Class="WinActivityManager"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <Grid>
        <ListView x:Name="lvItems" ItemsSource="{Binding Path=Activities}" />
    </Grid>
</Window>
bxgwgixi

bxgwgixi3#

在窗口构造函数中设置DataContext = this

public WinActivityManager()
{
    Activities = new ObservableCollection<Activity>();
    DataContext = this;
    InitializeComponent();
}

然后,您将能够根据需要绑定Activity:<ListView x:Name="lvItems" ItemsSource="{Binding Activities}" />

jgovgodb

jgovgodb4#

这是因为视图的数据上下文还没有设置,你可以在后面的代码中设置:

this.DataContext = this;

或者,可以将窗口的DataContext设置为自身-DataContext="{Binding RelativeSource={RelativeSource Self}}"
通过研究MVVM design patternusing an MVVM framework,您会更好。

相关问题