【问题标题】:Binding to actualWidth doesnt work, allthough it works in the designer; wpf [duplicate]绑定到 actualWidth 不起作用,尽管它在设计器中起作用; wpf [重复]
【发布时间】:2021-01-31 21:30:55
【问题描述】:

我在 WPF 中编写了一个应用程序,并将矩形的宽度绑定到网格 columnDefinition 的宽度。 我把它填成红色来测试它是否有效。它在设计器中工作,但是当我启动应用程序时,我看不到任何红色。 这是我的主窗口:

<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition x:Name="col1" Width="200"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition x:Name="col2"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition x:Name="row1"/>
        </Grid.RowDefinitions>

        <GridSplitter Grid.Column="1" SizeChanged="CanvasChangeSize" HorizontalAlignment="Stretch" Width="5"/>
        <Rectangle Fill="Red" HorizontalAlignment="Left" Height="50" StrokeThickness="0" VerticalAlignment="Top" Width="{Binding ElementName=col1, Path=ActualWidth}"/>

    </Grid>

谁能帮帮我?

【问题讨论】:

  • 你为什么要绑定宽度?矩形将自动调整为列的宽度。只是不要将其 Horizo​​ntalAlignment 设置为默认 Stretch 以外的任何其他值。
  • 我不知道为什么,但是当我删除宽度属性或者我改写 Grid.Column="0" 时它也不起作用

标签: c# wpf


【解决方案1】:

绑定毫无意义。去掉它,不要设置Horizo​​ntalAlignment:

<Rectangle Fill="Red" Height="50" VerticalAlignment="Top"/>

【讨论】:

  • 谢谢,它有效。但是为什么绑定不起作用?
  • ColumnDefinition.ActualWidth 不是依赖属性,不会通知属性更改。参见例如这里:stackoverflow.com/a/286737/1136211
猜你喜欢
  • 2010-12-08
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 2018-02-20
  • 2011-10-02
  • 1970-01-01
相关资源
最近更新 更多