我有一个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>
这样每个面板的宽度和高度都相同,我只需要设置一次。
答案 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。