【问题标题】:Silverlight Canvas Newbie QuestionSilverlight Canvas 新手问题
【发布时间】:2011-09-25 09:51:22
【问题描述】:

我有一个 Silverlight 用户控件,它在堆栈面板中具有多个画布控件。我知道我可以在 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>

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

【问题讨论】:

    标签: silverlight


    【解决方案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} 了。

    【讨论】:

      【解决方案2】:

      改用网格

      <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>
      

      两个画布的高度均为 300,宽度为 300。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 2012-07-16
        • 2010-12-08
        • 2011-08-13
        相关资源
        最近更新 更多