2

これは私を狂わせています。データを間違って設計したのかもしれませんが、親の ItemsControl からアクティブなアイテムにバインドしようとしています。

画面上で簡単に識別できるように、すべての領域に色が付けられます。各座席に色のプロパティを与える代わりに、エリア モデルに色を植えました。すべてのチャイルド シートは、その色を使用してペイントする必要があります。

何を試しても、親の 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>
4

1 に答える 1

7
<Rectangle Fill="{Binding DataContext.Color, RelativeSource={RelativeSource AncestorType=ItemsControl}"/>

ネストされたものは親ItemsControlの内部にあるため、 DataContext としてインスタンスItemTemplateを持ちます。Area

于 2013-07-29T21:24:34.277 に答える