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();

これは実行されますが、何も起こりません。また、このコードをデバッグするにはどうすればよいですか。プロジェクトファイルをVS2012にロードしましたが、実行してもブレークポイントで停止しません。

また試した:

Background.Fill = new SolidColorBrush(Colors.Red);

4

1 に答える 1

2

BackgroundXAMLファイルのBackgroundという名前の要素とは関係のない、という長方形を新しく作成しているため、.csコードは失敗します。

XAMLファイルで要素に名前を付けると、その名前のC#メンバーがデザイナーファイルで生成され、そのプロパティがXAML要素に接続されます(ロードされたXAML要素ツリーの名前による検索を介して)。つまり、すべての名前付き要素は、コードビハインドのプロパティとして簡単に参照できます。デザイナーファイルを見て、舞台裏で何が起こっているのかを感じてください。

行を削除して、Rectangle Background = new Rectangle();再試行してください。また、電話する必要はありませんBackground.UpdateLayout();

また、長方形要素には、すべての要素Backgroundのプロパティと混同する可能性があるため、ではなく別の名前を選択することをお勧めします。BackgroundPanel

他の問題があるかもしれませんが、最初にこれらの問題を整理するのが最善です:)

于 2012-06-29T06:00:58.540 に答える