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 将通过 DependencyProperty 公开颜色,而不是将其绑定到 ViewModel。)

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 回答