gpt4 book ai didi

c# - 在 ItemsControl : how to Bind element of ItemSource to x:Name of UserControl? 内具有依赖属性的 UserControl

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:20 27 4
gpt4 key购买 nike

我的类 IFrame 可以包含其他 IFrame:

public interface IFrame
{
int Id { get; }
string Summary { get; }

BindableCollection<IFrame> SubFrames { get; set; }
}

为了展示一个 IFrame,我有一个自定义的 UserControl:

<UserControl x:Class="Views.FrameView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Views="clr-namespace:Views"
mc:Ignorable="d"
x:Name="FrameXName">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding ElementName=FrameXName, Path=Id}" Width="50"/>
</StackPanel>
</UserControl>

代码隐藏:

public partial class FrameView : UserControl
{
public FrameView()
{
InitializeComponent();
}

public static DependencyProperty IdProperty = DependencyProperty.Register(
"Id", typeof(int), typeof(FrameView));

public int Id
{
get { return (int) GetValue(IdProperty); }
set { SetValue(IdProperty, value); }
}
}

因此我可以使用以下方法在 FooView.xaml 中显示一个框架: <Views:FrameView x:Name="Frame1" Width="50" Height="50"/>如果我在 FooViewModel.cs 中定义以下内容: public IFrame Frame1 { get { return Frames.ElementAt(1); } }

我的目标:

我想为集合中的每个 IFrame 显示一个 FrameView,例如:

<ItemsControl ItemsSource="{Binding Frames}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Views:FrameView x:Name="{Binding}" Width="50" Height="50"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

在哪里public BindableCollection<IFrame> Frames已定义。

不幸的是,这不起作用,编译器说 MarkupExtensions are not allowed for Uid or Name property values, so '{Binding}' is not valid.

我怎样才能实现我的目标?非常感谢。

最佳答案

在你的数据模板中你可以替换

<Views:FrameView x:Name="{Binding}" Width="50" Height="50" />

<Views:FrameView Id="{Binding Path=Id}" Width="50" Height="50" />

应该没问题

关于c# - 在 ItemsControl : how to Bind element of ItemSource to x:Name of UserControl? 内具有依赖属性的 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331507/

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