Windows Phone には C# と Silverlight を使用しています。
ItemsSource プロパティが ObservableCollection observableCollectionOfItemsA にバインドされている ListBox listBoxOfItemsA があります。XAML に示すように、ListBox 内の各 TypeA 項目は、ListBox.ItemTemplate を使用して描画されます。Canvas 要素に注目してください。それがなければ、すべてがうまくいきました。ここで、TypeA の各インスタンスを TypeB の 0 個以上のインスタンスに関連付けました。TypeB の各インスタンスは、HighlightColor を定義します。ListBox の各 TypeA アイテムに、それに関連付けられているすべての TypeB アイテムの HighlightColor を表示する方法が必要です。各 ListBox 項目に薄い Canvas 要素を追加し、水平方向に 0 個以上の領域に分割し (0 は黒の背景のままになります)、TypeB のインスタンスが関連付けられているのと同じ数の長方形をその Canvas にペイントすることを考えていました。 ListBox アイテム (これらすべての長方形の合計幅が一定になるように)。
質問:「????」には何を書けばいいですか?Canvas プロパティ (TypeA 内) を ListBox.ItemTemplate 内の Canvas 要素にバインドできるようにするには?
ありがとうございました。
編集 20120406_0202 : 各 TypeA インスタンスは、同時に複数の TypeB インスタンスにマップされる場合があります。例: 各 TypeA はお金の動き (ある口座から別の口座へ、特定の日付、特定のカテゴリに属するなど) であり、各 TypeB は、各 TypeA が満たす場合と満たさない場合がある一連の条件です (たとえば、日付が特定の範囲内にある、宛先アカウントが特定のアカウントと等しいなど)。TypeA ごとに、それがどの条件を満たしているかを一目で示したいと思います。満足した各セットには、追加の色が表示されます。
public class TypeA
{
public int Id { get; set; }
public string Name { get; set; }
public Canvas CanvasForItemsB {...} // I would like something like this, here, and to bind it to the Canvas element in the XAML.
}
public class TypeB
{
public SolidColorBrush HighlightColor {...}
}
ObservableCollection<TypeA> observableCollectionOfItemsA;
listBoxOfItemsA.ItemsSource =observableCollectionOfItemsA;
<ListBox x:Name="listBoxOfItemsA">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Id, Mode=OneWay}" />
<TextBlock Text="{Binding Name, Mode=OneWay}" />
<Canvas ????="{Binding CanvasForItemsB, Mode=OneWay}" Width="480" Height="10" Background="Black" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>