0

假设我有一个在 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);

4

1 回答 1

2

您的 .cs 代码失败,因为您正在新建一个名为 的矩形Background,这与 XAML 文件中名为 Background 的元素无关。

当您在 XAML 文件中命名元素时,将在设计器文件中生成该名称的 C# 成员,并且该属性连接到 XAML 元素(通过按加载的 XAML 元素树的名称进行搜索)。这意味着所有命名元素都可以在后面的代码中简单地作为属性引用。查看您的设计器文件,了解幕后发生的事情。

删除该Rectangle Background = new Rectangle();行并重试。你也不应该需要打电话Background.UpdateLayout();

您可能还想为矩形元素选择另一个名称,而不是,因为这可能会导致与所有元素Background的属性混淆BackgroundPanel

可能还有其他问题,但最好先解决这些问题 :)

于 2012-06-29T06:00:58.540 回答