2012-04-05 15 views
0

私はC#とSilverlight for Windows Phoneを使用しています。XAMLのCanvas要素をコードビハインドのCanvasプロパティにバインドする方法はありますか。

ItemsSourceプロパティがObservableCollection observableCollectionOfItemsAにバインドされているListBox listBoxOfItemsAがあります。 ListBoxの各TypeAアイテムは、XAMLに示すように、ListBox.ItemTemplateを使用して描画されます。 Canvas要素に注目してください。それがなければ、すべてうまくいった。今、TypeAの各インスタンスに0以上のTypeBのインスタンスを関連付けました。 TypeBの各インスタンスはHighlightColorを定義します。 ListBox内の各TypeA項目に、それに関連付けられたすべてのTypeB項目のHighlightColorを表示する方法が必要です。私は、各ListBox項目に薄いCanvas要素を追加し、0以上の領域で水平方向に分割する(0は黒い背景を残す)ことを考えていました.TypeBのインスタンスと同じ長方形がCanvasにペイントされますListBoxアイテム(すべての長方形の幅の合計が一定になるように)

質問:「????」で何を書いてください。私はCanvasプロパティ(TypeA)をListBox.ItemTemplateのCanvas要素にバインドできますか?

ありがとうございます。

編集20120406_0202:各タイプAのインスタンスを同時にに複数のタイプBのインスタンスにマッピングすることができます。たとえば、各タイプAは、(あるアカウントから別のアカウントへ、特定の日付に、ある種のカテゴリに属する​​)金銭の動きであり、それぞれのタイプBは、それぞれのタイプAが満たすことができる条件の集合であるたとえば、その日付がある範囲内にあり、その宛先アカウントが特定の範囲に等しいなど)。 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> 

答えて

0

あなたのリストボックス内の要素(複数可)を強調するためにしようとしている場合、おそらくちょうどあなたのItemTemplateににStackPanelの周囲に境界線を配置し、Borderの背景にバインディングを設定する方が簡単だろうプロパティ。そうすれば、キャンバスオブジェクトの束をメモリに格納することや、ListBoxに挿入することを心配する必要はありません。

+0

KodeKreachorでは、listBoxOfItemsAの各項目は、1つ以上の色にマップされている可能性があります。 – Telaclavo

+0

クールなので、リストアイテムのビューモデルの背景色プロパティのブラシカラー値を変更できるだけで、そのビューには更新されたカラーが反映されるようです。 – KodeKreachor

+0

私は同時に複数の色を意味します。 – Telaclavo