2

こんにちは、リソース ブラシをコードから、またはバインディングを介して変更する方法はありますか? 私がしたいのは、ボタンがクリックされたときに「メイン」ブラシの色を変更することです。

どうもありがとう!

編集:

そのGradientBrushの色を変更するにはどうすればよいですか?

myBrush.GradientStops[0].Color = Colors.Red;

例外があります...ストーリーボードのように、色の変化をアニメーション化する方法はありますか?

4

2 に答える 2

2

変更をアニメーション化するには、Storyboard を作成し、その上で Begin を呼び出してみてください。

(例をまとめていきます)

編集: 別の Silverlight のようです != 私の側で WPF が失敗します。WPFでうまくいかないようです。

于 2009-02-09T20:38:39.363 に答える
-1

Model-View-ViewModel (MVVM) パターンなどを使用している場合は、ブラシの色 (またはブラシ全体) をビューモデルのプロパティにして、それに直接バインドできます。

私の(経験の浅い)意見では、リソースは実行時に変更されるべきではありません。変更する場合は、バインドします。

(edit2: Silverlight スタイルの最上位 UserControl から WPF Window に変更されました。Ray Booysen がコメントで指摘したように、WPF の UserControl は、ViewModel にバインドされるのではなく、DependencyProperty を介して色を公開します。)

XAML:

<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <SolidColorBrush Color="{Binding BackgroundColor}" />
    </Grid.Background>
    ...

ビューモデル クラス:

public class MyViewModel : INotifyPropertyChanged
{
    public Color BackgroundColor
    {
        get { ... }
        set { ... } // fire PropertyChanged event
    }
    ...

XAML.cs:

public partial class MyWindow : Window
{
     private MyViewModel m_viewmodel;

     public MyWindow()
     {
          InitializeComponent();
          viewmodel = new MyViewModel();
          this.LayoutRoot.DataContext = viewmodel;
     }

     private void ButtonClick(object sender, RoutedEventArgs e)
     {
         this.viewmodel.BackgroundColor = Color.Red;
     }
     ...
于 2009-02-09T20:17:14.080 に答える