Как связать ширину элемента, где требуется поведение ширины «Авто»? - PullRequest
0 голосов
/ 27 января 2010

Я хочу, чтобы набор элементов имел одинаковую ширину, я не могу просто поместить их в сетку, так как это элемент управления содержимым и связанные элементы неизвестны.

В качестве простого примера, как связать все ширины первого дочернего элемента каждой панели стека вместе со вторым элементом.

  <StackPanel>
    <StackPanel Orientation="Horizontal">
      <Label Content="First column"/>
      <Label Content="Second Column" Background="Green"/>
    </StackPanel>
    <StackPanel Orientation="Horizontal">
      <Label Content="One"/>
      <Label Content="Two" Background="Green"/>
    </StackPanel>
  </StackPanel>

Ответы [ 2 ]

2 голосов
/ 01 февраля 2010

Мне не ясно, по какой причине вы не используете Grid из примера кода, но Grid предоставляет вам встроенный механизм для этого:

 <StackPanel Grid.IsSharedSizeScope="True">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Col1"/>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Col2"/>
        </Grid.ColumnDefinitions>
        <Label Content="First column" Grid.Column="0"/>
        <Label Content="Second Column" Background="Green" Grid.Column="1"/>
    </Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition SharedSizeGroup="Col1"/>
            <ColumnDefinition SharedSizeGroup="Col2"/>
        </Grid.ColumnDefinitions>
        <Label Content="One" Grid.Column="0"/>
        <Label Content="Two" Background="Green" Grid.Column="1"/>
    </Grid>
</StackPanel>

Будет ли это работать для вас или у вас есть другие ограничения, которые не позволяют вам сделать это?

0 голосов
/ 27 января 2010
    <StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label x:Name="FirstColumnLabel" Content="First column"/>
            <Label x:Name="SecondColumnLabel" Content="Second Column" Background="Green"/>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Label Content="One" Width="{Binding ElementName=FirstColumnLabel, Path=ActualWidth}"/>
            <Label Content="Two" Width="{Binding ElementName=SecondColumnLabel, Path=ActualWidth}" Background="Green"/>
        </StackPanel>
    </StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...