Вопрос новичка по холсту Silverlight - PullRequest
1 голос
/ 12 января 2010

У меня есть пользовательский элемент управления Silverlight, в котором есть несколько элементов управления 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 ]

1 голос
/ 13 января 2010

Добавьте эту декларацию пространства имен 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} так, как вы хотите.

0 голосов
/ 12 января 2010

Используйте сетку вместо

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...