Как связать конкретный столбец в сетке - XAML - PullRequest
0 голосов
/ 23 мая 2011

Например:

{Binding ElementName=grid1.Colums[1],Path=ActualHeight}

я знаю, что это не работает

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

ElementName должно быть только именем элемента, все остальное входит в Path.

Так что лучше бы это было:

{Binding ElementName=grid1,Path=Colums[1].ActualHeight}

Однако это не имеет смысла, если ваш элемент управления на самом деле Grid, так как нет свойства с именем Columns, поэтому вы можете использовать:

{Binding ElementName=grid1,Path=ColumnDefinitions[1].ActualHeight}

Однако это все еще не имеет смысла, поскольку ColumnDefinitions не имеет свойства ActualHeight, вы имели в виду ActualWidth?

0 голосов
/ 23 мая 2011

В привязке есть несколько проблем:

  1. grid1.Columns 1 - это не имя

  2. Aстолбец НЕ содержит дочерние элементы

Если вы хотите привязать к дочернему элементу сетки, вам нужно будет указать имя элемента управления, с которым вы хотите связать или выбрать элемент изДетская коллекция Сетка

РЕДАКТИРОВАТЬ

Возможно, вы имели в виду нечто иное: привязка к столбцу (хотя привязка к высоте столбцапохоже на привязку к высоте сетки ...)

См. этот пост

И это работает в конструкторе, но не работает во время выполнения:

<Grid x:Name="LayoutRoot">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100"/>
        <ColumnDefinition x:Name="col2" Width="*" />
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="1"  Text="{Binding ElementName=col2, Path=ActualWidth}" />
</Grid>

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

...