使用动态线性渐变画笔绘制Shape

时间:2014-07-03 23:33:28

标签: c# wpf

我找不到任何解决这个问题的方法,只有解决方案无法解决。我试图以编程方式在WPF中的圆柱上设置线性渐变画笔。示例代码是我最近尝试这样做的,第一位是来自.xaml文件的绘图,第二位来自.xaml.cs文件。

<Cyl:Cylinder Slices="128" TextureType="Drawing" 
                Point1="0 0 0" Point2="0 6 0" 
                Radius1="4" Radius2="4"
                Fold1="0.16" Fold2="0.84">
        <Cyl:Cylinder.Material>                        
             <DiffuseMaterial 
                    Brush="{Binding Path=Slide}">                           
             </DiffuseMaterial>
     </Cyl:Cylinder.Material>                    
</Cyl:Cylinder>

public partial class MainWindow : Window
{
        public MainWindow(string[] color)
        {
            InitializeComponent();
            setColors clsColor = new setColors();           
            LinearGradientBrush linGrBrush = new LinearGradientBrush(                   
                   Color.FromArgb(255,255, 0, 0),
                   Color.FromArgb(255,0, 255, 0),
                   new Point(0, 0.5),
                   new Point(1, 0.5));
            clsColor.Slide = linGrBrush;    
            this.DataContext = clsColor;            
        }

        public class setColors
        {            
            LinearGradientBrush LinGrBrush;            

            public LinearGradientBrush Slide
            {
                get
                { return LinGrBrush; }
                set { LinGrBrush = value; }
            }            
        }    
}

使用Brush="{DynamicResource myBrush}",使用伴随的行this.Resources["myBrush"] = linGrBrush;而不是使用DataContext也不会绘制任何内容。有什么方法可以使这个工作或?

1 个答案:

答案 0 :(得分:0)

要在xaml控件上设置颜色/画笔,不应使用视图模型。它可以在代码隐藏中完成,即xaml.cs,或者如果你想在不使用代码隐藏的情况下在某些条件下改变外观,它应该通过转换器来完成。

此外,MVVM中的UI反映的属性更改是通过在每个公共属性的setter中调用OnPropertyChangedMethod来实现的。您可以在界面INotifyPropertyChanged中获得此方法。

在此界面上查看更多内容,确保您的问题得到解决。