Как указать MaxWidth=?? TextBlock к фактической ширине владельца?

Как сослаться 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>

person DmitryBoyko    schedule 20.02.2012    source источник


Ответы (1)


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

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

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