質問

私はのResourceDictionaryで定義されている様々なPART_NAME項目を持つカスタムコントロールでボックスを描画し、着色するWPFで次のスタイルを持っています:

<ResourceDictionary>
.
.
.
<Brush x:Key="BoxStroke">#FFD69436</Brush>
  <LinearGradientBrush x:Key="BoxBrush" StartPoint="0,0" EndPoint="0,1">
    <LinearGradientBrush.GradientStops>
      <GradientStop Color="#FAFBE9" Offset="0" />
      <GradientStop Color="Green" Offset="1" />
    </LinearGradientBrush.GradientStops>
  </LinearGradientBrush>

<Style x:Key="BoxStyle" TargetType="Path">
    <Setter Property="Fill" Value="{DynamicResource BoxBrush}"/>
    <Setter Property="Stroke" Value="{DynamicResource BoxStroke}"/>
</Style>

<Style x:Key="Box" TargetType="Path" BasedOn="{StaticResource BoxStyle}">
    <Setter Property="Data" Value="M 0,0 H 60 V40 H 0 Z"/>
</Style>
.
.
.
</ResourceDictionary>

私の質問は、私はブラシのためのGradientStopの色のプロパティにアクセスする方法ですか?

たとえばボックスをユーザーがクリックすると、「ブルー」に「グリーン」からそれをオンにした場合。

私はユーザーとの対話を処理するための適切なコードのすべてを持って、私はちょうどブラシの色を変更する方法について困惑しています。

役に立ちましたか?

解決

これを行う最も簡単な方法ではなく、データバインディングを使用することです。変更したい色の値を含むプロパティを持つオブジェクトにビューをバインドします。そして、勾配にそのプロパティ値をバインドします。ボタンをクリックすると、そのプロパティを変更して、データバインディングメカニズムはあなたのために、画面上の色を更新します。ちょうどあなたがINotifyPropertyChangedのを実装またはプロパティ依存関係プロパティを作るのいずれか作ります。

グッドラック!

他のヒント

あなたはコード内でブラシにアクセスすることができたら、あなたはそれに色の値を割り当てる必要があります。例えばSystem.Windows.Media.ColorConverterクラスがSystem.Windows.Media.Color値に進/ウェブカラーを変換します。

ここにサンプルがあります、うまくいけば、これはあなたがについて尋ねているものの一般的な考え方です。

System.Windows.Media.LinearGradientBrush gb = new System.Windows.Media.LinearGradientBrush();
gb.GradientStops[0].Color = (Color)ColorConverter.ConvertFromString("#FF00FF00");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top