gpt4 book ai didi

c# - 以编程方式绑定(bind)名称 ItemsControl

转载 作者:行者123 更新时间:2023-12-05 08:57:30 25 4
gpt4 key购买 nike

我以编程方式创建了一个矩形网格,每个矩形内部都有一个标签。我检测使用事件命令单击了哪个矩形。我的问题是,如果我尝试绑定(bind)矩形名称,我会收到此错误:Uid 或 Name 属性值不允许使用 MarkupExtensions,因此“{Binding ID}”无效因此,只有单击标签才能检索名称。这个问题有解决方案吗?我的 XAML:

<ItemsControl ItemsSource="{Binding CaskList}" HorizontalAlignment="Left" VerticalAlignment="Top">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Width="1680" Height="800">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown" >
<cmd:EventToCommand Command="{Binding SelCaskCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Left}"/>
<Setter Property="Canvas.Top" Value="{Binding Top}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Rectangle Stroke="Black" Width="64" Height="64" Fill="{Binding Color}" ></Rectangle>
<Label Content="{Binding ID}" FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

我尝试简单地使用

绑定(bind)矩形
<Rectangle Stroke="Black" Width="64" Height="64" Fill="{Binding Color}" Name="{Binding ID}">

绑定(bind)到 Itemscontrol 的类是

public class Cask
{
public string ID { get; set; }
public Int64 Left { get; set; }
public Int64 Top { get; set; }
public SolidColorBrush Color { get; set; }
}

最佳答案

不建议对 Name 属性进行数据绑定(bind)。如果绑定(bind) name 属性,则名称变为动态。如果名称是动态的,则您无法从代码隐藏中引用该控件。因此,您收到错误消息“Uid 或 Name 属性值不允许使用 MarkupExtensions,因此‘{Binding ID}’无效”。

如果您真的想绑定(bind) ID 属性并在您的代码隐藏或 View 模型中使用它,那么您可以将它绑定(bind)到 Tag 属性。

关于c# - 以编程方式绑定(bind)名称 ItemsControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31112022/

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