>假设我在 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>
.cs文件
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);
.cs代码失败,因为您正在更新一个名为 Background
的矩形,该矩形与 XAML 文件中名为 Background 的元素无关。
在 XAML 文件中命名元素时,将在设计器文件中生成该名称的 C# 成员,并且该属性将连接到 XAML 元素(通过按加载的 XAML 元素树的名称搜索)。这意味着所有命名元素都可以简单地作为代码隐藏中的属性引用。查看您的设计器文件,了解幕后发生的事情。
删除Rectangle Background = new Rectangle();
行,然后重试。您也不需要致电Background.UpdateLayout();
您可能还想为矩形元素选择另一个名称,而不是Background
,因为这可能会导致与所有Panel
元素的 Background
属性混淆
可能还有其他问题,但最好先解决这些问题:)