我通过编程创建了一个矩形网格,每个矩形内都有一个Label。我使用事件命令检测哪个矩形已被点击。我的问题是,如果我尝试绑定矩形名称,我得到此错误: MarkupExtensions不允许用于Uid或Name属性值,因此'{Binding ID}'无效 所以我可以只检索名称我点击标签。有没有解决这个问题的方法? 我的XAML:以编程方式绑定名称ItemsControl
<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>
我想简单地使用
<Rectangle Stroke="Black" Width="64" Height="64" Fill="{Binding Color}" Name="{Binding ID}">
绑定到ItemsControl中的类rectanle绑定是
public class Cask
{
public string ID { get; set; }
public Int64 Left { get; set; }
public Int64 Top { get; set; }
public SolidColorBrush Color { get; set; }
}
你怎么试着绑定矩形名? – Joseph
什么是ID字段的类型?你能显示这个属性的声明吗? –
谢谢你的回复,我编辑了我的问题,向你展示绑定和类 – Parni