我说我在Blend中创建了一个Silverlight矩形。如何更改对象的背景填充。
XAML
<Rectangle x:Name="Background" Stroke="Black" StrokeThickness="0" Height="480" Width="640">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
<GradientStop Color="#FED40707" Offset="0.164"/>
<GradientStop Color="#FED5EB0E" Offset="0.392"/>
<GradientStop Color="#FE849AF4" Offset="0.595"/>
<GradientStop Color="#FE2C9937" Offset="0.797"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
Rectangle Background = new Rectangle();
string fileName = "Images/yello.png";
BitmapImage image = new BitmapImage(new Uri(fileName, UriKind.Relative));
ImageBrush brush = new ImageBrush();
brush.ImageSource = image;
Background.Fill = brush;
Background.UpdateLayout();
这样运行但没有任何反应。另外我如何调试此代码。我将项目文件加载到VS 2012中,但是当它运行时,它不会在断点上停止。
Background.Fill = new SolidColorBrush(Colors.Red);
答案 0 :(得分:2)
您正在创建名为Background
的矩形时,您的.cs代码失败,该矩形与XAML文件中名为Background的元素无关。
在XAML文件中命名元素时,在设计器文件中生成该名称的C#成员,并且该属性连接到XAML元素(通过按加载的XAML元素树的名称搜索) 。这意味着所有命名元素都可以简单地作为后面代码中的属性引用。查看设计器文件,了解幕后发生的事情。
删除Rectangle Background = new Rectangle();
行,然后重试。您也不需要致电Background.UpdateLayout();
您可能还想为矩形元素选择其他名称而不是Background
,因为这可能会导致与所有Background
元素的Panel
属性混淆
可能还有其他问题,但最好先解决这些问题:)