Как ссылаться на MaxWidth = "??"TextBlock для владельца ActualWidth? - PullRequest
0 голосов
/ 20 февраля 2012

Как отнести MaxWidth="??" из TextBlock к stpMessage ActualWidth?

<StackPanel Name="stpMessage" Orientation="Horizontal"  Margin="0,5,0,0">
                    <Grid >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="2*" />
                            <ColumnDefinition Width="2*" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Margin="0,0,0,0" Foreground="Blue" TextWrapping="Wrap">@ToUserName</TextBlock>
                        <StackPanel Grid.Column="1">
                            <TextBlock Margin="5,0,0,0" Text="{Binding Path=Text}" MinHeight="20"  MinWidth="200"  HorizontalAlignment="Stretch" MaxWidth="1000"
                                       VerticalAlignment="Stretch" TextWrapping="WrapWithOverflow">START skf skdjf skdj hfskdjf ksdjhf ksjdhf ksjhf kjsf kjshf kjshkjfhsdf kjsfdkj hskdfj hskdjf hskdjf skjhfksjfks END</TextBlock>
                        </StackPanel>    
                    </Grid>
                </StackPanel>

1 Ответ

4 голосов
/ 20 февраля 2012

Проблема в том, что StackPanels не ограничивает размер своих детей, поэтому будет расти столько, сколько нужно их детям

Измените StackPanel на элемент управления, ограничивающий размер его детей.дочерние элементы, например Grid (или обернуть его в другом элементе управления), а затем использовать привязку ElementName для привязки к свойству ActualWidth этого элемента управления

<Grid Name="stpMessage" ... />
    ...
    <TextBlock MaxWidth="{Binding ElementName=stpMessage, Path=ActualWidth}" ... />
    ...
</Grid>
...