0

WPFには、ボックスを描画して色を付けるための次のスタイルがあります。これは、ResourceDictionaryで定義されたさまざまなPART_Nameアイテムを使用したカスタムコントロールです。

<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カラープロパティにアクセスするにはどうすればよいですか?

たとえば、ユーザーがボックスをクリックした場合は、ボックスを「緑」から「青」に変更します。

ユーザーの操作を処理するための適切なコードがすべて揃っているので、ブラシの色を変更する方法に困惑しています。

4

2 に答える 2

2

これを行う最も簡単な方法は、代わりにデータバインディングを使用することです。変更する色の値を含むプロパティを持つオブジェクトにビューをバインドします。次に、そのプロパティ値をグラデーションにバインドします。ボタンをクリックしてそのプロパティを変更すると、データバインディング メカニズムによって画面上の色が更新されます。INotifyPropertyChanged を実装するか、プロパティを依存関係プロパティにすることを確認してください。

幸運を!

于 2009-11-02T22:22:15.813 に答える
0

コードでブラシにアクセスできるようになったら、それに Color 値を割り当てるだけです。たとえば、System.Windows.Media.ColorConverterクラスは hex/web の色を値に変換しSystem.Windows.Media.Colorます。

これがサンプルです。うまくいけば、これはあなたが求めていることの一般的な考えです:

System.Windows.Media.LinearGradientBrush gb = new System.Windows.Media.LinearGradientBrush();
gb.GradientStops[0].Color = (Color)ColorConverter.ConvertFromString("#FF00FF00");
于 2009-11-02T22:51:15.290 に答える