这让我疯了。 也许我设计了错误的数据,但我试图从父ItemsControl绑定到活动项。
每个区域都会获得一种颜色,以便在屏幕上轻松识别。我没有给每个座位赋予颜色属性,而是在Area模型中种植了颜色。所有儿童座椅都需要使用这种颜色来自己画画。
无论我尝试什么,我都无法访问父ItemsControl,因此我可以获取该特定区域的活动颜色属性。
模型(简体)
public class BuildingLayout
{
public ObservableCollection<Area> Areas { get; set; }
}
public class Area
{
public Color Color { get; set; } // The color I want to bind to
...
public ObservableCollection<Table> Tables { get; set; }
}
public class Table
{
public int Seat { get; set; } // The seat needs to get the area color
}
XAML
<ItemsControl ItemsSource="{Binding Path=Areas}">
...
<ItemsControl.ItemTemplate>
<!-- Nested Listbox -->
<ItemsControl ItemsSource="{Binding Path=Tables}">
...
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- Now I want to get to the color property of
the parent (Area) -->
<Rectangle Fill="{Binding ..., Path=Color}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 0 :(得分:6)
<Rectangle Fill="{Binding DataContext.Color, RelativeSource={RelativeSource AncestorType=ItemsControl}"/>
因为嵌套的ItemsControl
位于Parent ItemTemplate
的内部,因此它将具有Area
实例,因为它是DataContext。