Silverlight帆布新手问题

时间:2010-01-12 20:02:20

标签: silverlight

我有一个Silverlight用户控件,它在Stack Panel中有几个canvas控件。我知道我可以在Xaml中手动设置每个画布面板的宽度和高度,但我希望它们的大小相同。

我是否可以通过某种方式在UserControl.Resources位置定义属性:

<UserControl.Resources>
    <Setter Property Name="aWidth" Value="50" />
    <Setter Property Name="aHeight" Value="50" />
</UserControl.Resources>

<StackPanel Orientation="Horizontal">
<Canvas x:Name="canvas1" Width="{StaticResource aWidth}" Height="{StaticResource aHeight}" />
<Canvas x:Name="canvas2" Width="{StaticResource aWidth}" Height="{StaticResource aHeight}" />
</StackPanel>

这样每个面板的宽度和高度都相同,我只需要设置一次。

2 个答案:

答案 0 :(得分:1)

将此xml名称空间声明添加到Xaml的根目录:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

将资源更改为如下所示:

<UserControl.Resources>
    <sys:Double x:Key="aWidth" >50</sys:Double>
    <sys:Double x:Key="aHeight" >50</sys:Double>
</UserControl.Resources>

现在你应该能够以你想要的方式使用{StaticResource}。

答案 1 :(得分:0)

改为使用网格

<Grid Width="600" Height="300">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />          
    </Grid.ColumnDefinitions>
    <Canvas x:Name="canvas1"  />
    <Canvas x:Name="canvas2" Grid.Column="1" />
</Grid>

Canvas的高度均为300,宽度为300。