【问题标题】:WPF Edit ResourceWPF 编辑资源
【发布时间】:2009-02-09 19:50:54
【问题描述】:

您好,有什么方法可以通过代码或通过某种绑定来更改资源画笔? 我想要做的是在单击按钮时更改“主”画笔的颜色。

非常感谢!

编辑:

它是一个 GradientBrush 我如何改变它的颜色?

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

只是给了我一个例外......有没有办法让颜色变化产生动画效果,比如故事板?

【问题讨论】:

    标签: wpf animation binding resources brush


    【解决方案1】:

    要为更改设置动画,请尝试创建一个故事板并在其上调用 Begin。

    (我会一起举个例子)

    编辑:看起来这是另一个 Silverlight != WPF 失败了。我似乎无法在 WPF 中运行它。

    【讨论】:

      【解决方案2】:

      如果您使用模型-视图-视图模型 (MVVM) 模式或类似的模式,您可以将画笔颜色(或整个画笔)设置为视图模型的属性并直接绑定到它。

      在我(没有经验的)看来,资源不应该在运行时改变。如果它要改变,就绑定它。

      (edit2:从 Silverlight 样式的顶级 UserControl 更改为 WPF Window。正如 Ray Booysen 在 cmets 中指出的那样,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;
           }
           ...
      

      【讨论】:

      • 如果采用 MVVM 模式方法,您甚至不会有 Click 处理程序。相反,您将在“MyViewModel”类中公开一个命令(称为 ChangeMainBrushCommand 或其他),它运行更改逻辑并让您的视图的“更改按钮”将其命令属性绑定到您的自定义命令。
      • 是的,但是在 Silverlight 中我不能执行命令,所以我不想考虑它们 :(
      • 那里,那里。他们会记住你们这些网络人……最终。
      • 哈哈...具有讽刺意味的是,我是一名 WinForms 编码员,大约 6 年没有接触过网络内容。碰巧的是,在我决定迁移到 WPF 之后,我桌面上的第一个项目必须部署在 Web 上,所以 Silverlight 是...
      • 哇,不。如果你正在做一个 UserControl 只是公开一个依赖属性,没有 UI 的 ViewModel 支持。对用户控件遵循与普通控件相同的模式。控件的使用者可以编写然后是使用新依赖属性更改画笔的动画。
      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 2011-10-26
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多