我在 Visual Studio 2008 中使用 WPF。我有一个简单的 WPF UserControl,代码如下:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
Composite = new Composite();
}
protected override void OnRender(DrawingContext drawingContext)
{
//LayoutRoot is name of default Grid instance
if (!LayoutRoot.Children.Contains(Composite))
{
LayoutRoot.Children.Add(Composite);
}
}
public Composite Composite
{
get;
set;
}
}
public class Composite : ContentControl
{
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawRectangle(new SolidColorBrush(Color), new Pen(Brushes.Black, 1.0), new Rect(RenderSize));
}
public Color Color
{
get;
set;
}
}
然后我在 WPF 应用程序中使用这个 UserControl,页面的 XAML 如下所示:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:test="clr-namespace:WpfControlLibrary1;assembly=WpfControlLibrary1"
Title="Window1" Height="500" Width="700" Background="AliceBlue">
<test:UserControl1 Name="uControl1">
<test:UserControl1.Composite>
<test:Composite Color="Green"/>
</test:UserControl1.Composite>
</test:UserControl1>
</Window>
我的问题是:我必须在上面添加什么代码,以便通过将“复合颜色”更改为绿色以外的其他颜色并点击返回按钮,UserControl 会自动刷新?我正在寻找的行为是当您将 Window1 的背景更改为 AliceBlue 以外的颜色并点击返回时会发生什么。
当我运行代码时,可以看到正确的颜色,问题出在设计时通过 XAML 刷新。
非常感谢任何帮助我理解这里发生了什么的指针!