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



>假设我在 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 属性混淆

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

最新更新