2017-11-16 3 views
0

私は、オブジェクトのコレクションにMyModel.csと言っています。コレクションはSomeと呼ばれます。 MyModelには、ブラシタイプのColorというプロパティがあります。バインドItemSourcesのプロパティのストローク

色はすべて現在赤です。

は今、私は

<MyControl: x:Name="control1" ItemsSource="{Binding Some}" Stroke="Red"> 

を持っているしかし、あなたは、私は、脳卒中をハードコード参照してください。私が欲しいものは何かのようなものです Stroke = "{Binding Some.Color}"

どのようにですか?

+0

カスタムコンバーターでMultiBindingを使用する必要があります(コレクションの2つのモデルが異なる色を持つ場合 - 選択するか?)か、上位レベル(コレクションが存在する場所)にプロパティを移動する必要があります。 – Shcherban

+0

@Shcherban、異なる色がある場合、私は異なるコレクションを持っています。だから私はMultiBindingを使用しません。 – Bigeyes

+0

さて、 'Stroke = {Binding Some、Converter = SomeConverter}'のようなコレクション内の最初のアイテムの色を選び、 'return(value as IEnumerable )?FirstOrDefault )?。色 ?? Colors.Red' – Shcherban

答えて

2

モデルを表示します。これは、最初MyModelオブジェクトのColorプロパティにStrokeプロパティをバインドします

<MyControl x:Name="control1" ItemsSource="{Binding Some}" Stroke="{Binding Some[0].Color}"> 

:あなたがそれらの1のColorStrokeプロパティを設定したい場合は、その1つ、例えば指定する必要がありますSomeコレクションにインデクサがあると仮定します。

1

MyControlSelectorから継承する場合は、IsSynchronizedWithCurrentItem="True"を設定し、Some/Colorにバインドします。スラッシュまたはvirgule(/)は、コレクション内の「現在の項目」からColorプロパティを使用することを意味:

<MyControl 
    IsSynchronizedWithCurrentItem="True" 
    x:Name="control1" 
    ItemsSource="{Binding Some}" 
    Stroke="{Binding Some/Color}" 
    /> 

これは、脳卒中のために選択した項目のカラーブラシを使用します。あなたは、あなたがしようとしていることについてのヒントを提供することを非常に躊躇していますが、それは公正な推測です。

MyControlSelectorから継承されない場合は、mm8のソリューションを使用してください。

関連する問題