Silverlight:更改绘制对象的属性。 - 应该很容易和如何调试代码

时间:2012-06-28 20:32:12

标签: silverlight

我说我在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);

1 个答案:

答案 0 :(得分:2)

您正在创建名为Background的矩形时,您的.cs代码失败,该矩形与XAML文件中名为Background的元素无关。

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

删除Rectangle Background = new Rectangle();行,然后重试。您也不需要致电Background.UpdateLayout();

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

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