2012-02-20 30 views
0

如何引用TextBlockMaxWidth="??"stpMessageActualWidth如何引用MaxWidth =“??” TextBlock的所有者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> 

回答

3

这样做的问题是,StackPanels不限制孩子的大小,所以将增长不亚于他们的子女需要

更改StackPanel到限制大小的它是孩子们的控制,像Grid(或包装在另一个控制),然后使用一个ElementName结合绑定到该控制的ActualWidth属性

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