带有内容的Windows Phone 8用户控件

时间:2014-03-15 07:31:52

标签: c# silverlight windows-phone-8

我想创建一个像用户控件这样的仪表,它将在后台显示一组矩形,这些矩形具有基于某个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>

如何在动态绘制的背景上显示注入的内容?

0 个答案:

没有答案