Ширина холста wpf, основанная на дочерних элементах - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть Canvas внутри Grid, на columndefinition ширины Auto.Холст не увеличивается автоматически, чтобы содержать его элементыЕго ширина всегда остается zero.Я должен вручную жестко кодировать ширину.

<Grid Height="35"
      HorizontalAlignment="Right"
      MouseEnter="floater_MouseEnter"
      MouseLeave="floater_MouseLeave"
      >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <Canvas Grid.Column="1"
            Background="White"
            Height="32.7"
            VerticalAlignment="Top"
            Visibility="Visible"
            >
        <TextBlock Text="asdfsdf" FontSize="23"/>
    </Canvas>
</Grid>

Я хочу, чтобы ширина холста масштабировалась на основе элементов.Что мне делать?

1 Ответ

0 голосов
/ 24 сентября 2018

Canvas не будет работать таким образом.От MSDN

Canvas - единственный элемент панели, который не имеет внутренних характеристик макета.Canvas имеет свойства высоты и ширины по умолчанию, равные нулю, если только он не является дочерним элементом элемента, который автоматически изменяет размеры своих дочерних элементов.Дочерние элементы Canvas никогда не меняются, они просто располагаются по назначенным координатам.Это обеспечивает гибкость в ситуациях, когда внутренние ограничения или выравнивание размеров не нужны или не нужны.Для случаев, когда вы хотите, чтобы дочерний контент автоматически изменял размеры и выравнивал, обычно лучше использовать элемент Grid.

Если вы по-прежнему хотите использовать Canvas по какой-то причине.Вы можете привязать к Width из TextBox.Мол,

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <Canvas Grid.Column="1" Background="Green" Width="{Binding Path=ActualWidth, ElementName=text}">
        <TextBlock Text="asdfsdf" FontSize="23" x:Name="text"/>
    </Canvas>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...