【问题标题】:Make column width same as another column width [duplicate]使列宽与另一个列宽相同[重复]
【发布时间】:2019-08-29 11:41:24
【问题描述】:

在我的 WPF 应用程序中,我在父网格中有 2 个网格:

<Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="col1 width"/>
            <ColumnDefinition Width="col2 width"/>
        <Grid.ColumnDefinitions>
    </Grid>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" x:Name="col1"/>
            <ColumnDefinition Width="Auto" x:Name="col2"/>
        <Grid.ColumnDefinitions>
    </Grid>
</Grid>

如何将第一个网格中的列定义的宽度绑定到另一个网格?

【问题讨论】:

  • 可以设置绑定,但这样做很愚蠢。 WPF 提供了一种很好的机制来自动确保网格列在多个网格中的宽度相同。 Stack Overflow 上已经有很多问题询问您的问题,并附有答案。例如,参见上面提到的三个副本。

标签: wpf


【解决方案1】:

你可以这样做

<Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="{Binding ElementName=col1, Path=Width}"/>
            <ColumnDefinition Width="{Binding ElementName=col2, Path=Width}"/>
        <Grid.ColumnDefinitions>
    </Grid>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" x:Name="col1"/>
            <ColumnDefinition Width="Auto" x:Name="col2"/>
        <Grid.ColumnDefinitions>
    </Grid>
</Grid>

【讨论】:

  • xaml 找不到 col1col2 因为它们在 xaml 中的级别。
  • 你可以用 C# 编写绑定,你可以访问它们。
【解决方案2】:

我测试了下面的代码,它运行良好。

<Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}"/>
            <ColumnDefinition Width="{Binding ElementName=col2, Path=ActualWidth}"/>
         </Grid.ColumnDefinitions>
    </Grid>
    <Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100" x:Name="col1"/>
            <ColumnDefinition Width="150" x:Name="col2"/>
            </Grid.ColumnDefinitions>
    </Grid>

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 2017-12-25
    • 1970-01-01
    • 2012-03-06
    • 2015-01-18
    • 1970-01-01
    • 2021-08-06
    • 2016-08-20
    • 2011-03-14
    相关资源
    最近更新 更多