2011-10-27 15 views
0

色が塗りつぶされる矩形が、RGBスライダからMultiBindingConverterによって決定されます。線分ブラシに矩形の塗りつぶしを行う

 <Rectangle.Fill> 
      <SolidColorBrush> 
       <SolidColorBrush.Color> 
        <MultiBinding Converter="{StaticResource RgbConverter}"> 
         <Binding Path="Value" ElementName="RSlider" />  
         <Binding Path="Value" ElementName="GSlider" /> 
         <Binding Path="Value" ElementName="BSlider" /> 
        </MultiBinding> 
       </SolidColorBrush.Color> 
      </SolidColorBrush> 
     </Rectangle.Fill> 

今、私は私がたObjectDataProvider

ChosenColorは、拡張メソッドである
<ObjectDataProvider ObjectInstance="{StaticResource ResourceKey=cColor}" MethodName="ChosenColor" x:Key="chColor" > 
    </ObjectDataProvider> 

てみました色のGradientStop

 <Rectangle.Fill> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Offset="0" Color="Black" /> 
       <GradientStop Offset="1" Color="{here bind the color}" /> 
      </LinearGradientBrush> 
     </Rectangle.Fill> 

"選択" というようにしたい:

public static Color ChosenColor(this Rectangle rect) 
    { 
     return ((SolidColorBrush)rect.Fill).Color; 
    } 

は運がない。どうやってするか?

答えて

1

あなたはこのような他のRectangleのFill.Colorプロパティに直接結合することができます - 私はあなたのコンバータがColor返し、正しく理解していれば、あなたの最初の長方形の名を想定し

rectangle1

<Rectangle.Fill> 
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Offset="0" Color="Black" /> 
    <GradientStop Offset="1" Color="{Binding ElementName=rct, Path=Fill.Color}" /> 
    </LinearGradientBrush> 
</Rectangle.Fill> 
+0

あなたはこれを単純化し、コンバータを使用しないことができるはずです。<のGradientStopは=「1」色=を "オフセット{のElementNameバインディング= rct、Path = Fill.Color} "/> – AndrewS

+0

Thnx @AndrewS私は自分の答えを更新しました。そのコンバーターを書いているときに私が何を考えていたのか分かりません。 :) –

+0

そのシンプルさのために:)素晴らしい仕事RV1987、ありがとう – deha

1

です。あなたはSolidColorBrushの者を指定するのと同じ方法でのGradientStopの色を指定することができるはずです。

<Rectangle.Fill> 
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
     <GradientStop Offset="0" Color="Black" /> 
     <GradientStop Offset="1"> 
      <GradientStop.Color> 
       <MultiBinding Converter="{StaticResource RgbConverter}"> 
        <Binding Path="Value" ElementName="RSlider" />  
        <Binding Path="Value" ElementName="GSlider" /> 
        <Binding Path="Value" ElementName="BSlider" /> 
       </MultiBinding> 
      </GradientStop.Color> 
     </GradientStop> 
    </LinearGradientBrush> 
</Rectangle.Fill> 
関連する問題