我想创建一个像用户控件这样的仪表,它将在后台显示一组矩形,这些矩形具有基于某个DataContext对象值的比例宽度。问题的简单性我在下面的示例中绘制了硬编码的矩形。
<UserControl x:Class="MyApp.UI.BlockGauge"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DataContext="{d:DesignData SampleData/SampleViewModelSampleData.xaml}"
d:DesignWidth="468"
d:DesignHeight="120"
Name="GaugeControl">
<Grid x:Name="LayoutRoot" Margin="0">
<StackPanel x:Name="RootPanel">
<Canvas x:Name="BackgroundCanvas" Height="{Binding ActualHeight, ElementName=RootPanel}" Width="{Binding Width, ElementName=LayoutRoot}">
<ContentPresenter Canvas.ZIndex="0"/>
<Rectangle Width="240" Height="{Binding ActualHeight, ElementName=BackgroundCanvas}" Fill="{StaticResource PhoneAccentBrush}" Canvas.ZIndex="-20" />
<Rectangle Width="80" Height="{Binding ActualHeight, ElementName=BackgroundCanvas}" Fill="Green" Canvas.ZIndex="-20" Canvas.Left="240"/>
<Rectangle Width="40" Height="{Binding ActualHeight, ElementName=BackgroundCanvas}" Fill="Orange" Canvas.ZIndex="-20" Canvas.Left="320"/>
</Canvas>
</StackPanel>
</Grid>
</UserControl>
我决定使用userControl的主要原因是根据绑定到它的视图模型对象计算矩形。
我希望此控件仅适用于backgound,并允许父级设置内容。每当我设置内容时 - 所有用户控件内容都被它覆盖,我可以看到新内容而不是硬编码的rectagles。我想在动态背景上定制内容。
我已尝试在控件内进行模板操作,但它表示用户控件不支持模板属性。
<UserControl.Template>
<ControlTemplate>
</ControlTemplate>
</UserControl.Template>
如何在动态绘制的背景上显示注入的内容?