我正在使用Silverlight 5.我有一个简单的UserControl,如下所示:
<UserControl x:Class="GIS.VerticalDeformationGraphic"
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" >
<Viewbox Grid.Column="0" MinHeight="400" >
<Canvas Width="65" Height="450">
<Rectangle Canvas.Left="5" Canvas.Top="10" Width="15" Height="400" HorizontalAlignment="Left">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="DarkRed" Offset="0.0" />
<GradientStop Color="Red" Offset="0.2" />
<GradientStop Color="Yellow" Offset="0.4" />
<GradientStop Color="LightGreen" Offset="0.5" />
<GradientStop Color="LightBlue" Offset="0.6" />
<GradientStop Color="Blue" Offset="0.8" />
<GradientStop Color="DarkBlue" Offset="1.0" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>
</Viewbox>
</UserControl>
我的xaml页面中有一个像这样的引用:
xmlns:local="clr-namespace:GIS"
我尝试将用户控件放在网格单元格中,如下所示:
<local:VerticalDeformationGraphic Grid.Column="0" />
如果我使用UserControl中的ViewBox并简单地将整个内容粘贴到网格中,我唯一要做的就是将Grid.Column分配给ViewBox并且它可以工作。我错过了什么让UserControl不会出现在UserControl中?
这正是我在页面中使用它的方式:
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!--<sdk:Label Grid.Column="0" FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,1,0,1"
Content="A Graphic Goes Here">
</sdk:Label>-->
<local:VerticalDeformationGraphic Grid.Column="0" Height="450" Width="65" />
请注意,标签在我评论之前已经有效。
答案 0 :(得分:1)
代码隐藏必须调用InitializeComponent()。当我右键单击项目并选择Add / New Item / Silverlight时,我没有Silverlight UserControl的选项......所以我刚刚添加了一个xaml文件。