我找不到任何解决这个问题的方法,只有解决方案无法解决。我试图以编程方式在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也不会绘制任何内容。有什么方法可以使这个工作或?
答案 0 :(得分:0)
要在xaml控件上设置颜色/画笔,不应使用视图模型。它可以在代码隐藏中完成,即xaml.cs,或者如果你想在不使用代码隐藏的情况下在某些条件下改变外观,它应该通过转换器来完成。
此外,MVVM中的UI反映的属性更改是通过在每个公共属性的setter中调用OnPropertyChangedMethod来实现的。您可以在界面INotifyPropertyChanged中获得此方法。
在此界面上查看更多内容,确保您的问题得到解决。