嗨,有什么方法可以从代码或通过某些绑定更改资源画笔?我想要做的是在单击按钮时更改“主”画笔的颜色。
非常感谢!
编辑:
它是一个 GradientBrush 我如何改变它的颜色?
myBrush.GradientStops[0].Color = Colors.Red;
只是给了我一个例外......有没有办法让颜色变化产生动画效果,比如故事板?
要为更改设置动画,请尝试创建一个 Storyboard 并在其上调用 Begin。
(我会一起举一个例子)
编辑:看起来这是另一个 Silverlight != 我的 WPF 失败。我似乎无法让它在 WPF 中运行。
如果您使用的是 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;
}
...