gpt4 book ai didi

c# - 绑定(bind)到用户控件 WPF/XAML 的依赖属性

转载 作者:可可西里 更新时间:2023-11-01 07:50:41 25 4
gpt4 key购买 nike

我的应用看起来像这样:


SectionHeader

SectionHeader

内容

SectionHeader

内容


SectionHeader 是一个用户控件,具有两个依赖属性 = Title 和 Apps。

Title 不变,但 Apps 需要绑定(bind)到主窗口 View 模型的 Apps 属性。只有三个部分标题中的两个需要 Apps 属性。

<c:SectionHeader DockPanel.Dock="Top" x:Name="SectionResources" Title="RESOURCES"
Apps="{Binding Path=Apps}" />

目前是这样的。问题是应用程序没有显示。

SectionHeader 中,DataContext 设置为自身,如下所示,这允许显示标题。

DataContext="{Binding RelativeSource={RelativeSource Self}}"

Apps 是 UserControl 中 ItemsControl 的 ItemsSource:

<ItemsControl
ItemsSource="{Binding Apps}">

所以我的问题是:

  • 如何将数据绑定(bind)到 UserControl DP?
  • 在没有 UserControls 的情况下,他们是否更容易实现这种布局?

编辑:

忘记提及 Apps 是 AppsItems 的 ObservableCollection。

这是我的 DP 的样子:

public static readonly DependencyProperty AppsProperty = DependencyProperty.Register("Apps",
typeof (ObservableCollection<AppsItem>), typeof (SectionHeader),
new PropertyMetadata(null, OnAppsPropertyChanged));

private static void OnAppsPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Console.WriteLine("Hello!!!");
var sectionHeader = d as SectionHeader;
var value = e.NewValue as ObservableCollection<AppsItem>;
sectionHeader.Apps = value;
}

最佳答案

为您的 usecontrol 命名并尝试像这样绑定(bind)

ItemsSource="{Binding Apps,ElementName=root}"

root 是给你的用户控件的名字

  <UserControl x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="350" Width="525"
x:Name="root">

它是元素绑定(bind)到具有 Apps 属性的用户控件

关于c# - 绑定(bind)到用户控件 WPF/XAML 的依赖属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6787219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com