2011-09-04 63 views

回答

6

很抱歉,该功能没有此属性。

,我所知道的唯一的解决方法是使用现有的控制或将另一个隐藏控制在同一个空间,然后绑定的WidthTextBlock/TextBox到控制ActualWidth

下面是一个例子,当TextBlock不会影响ColumnDefinitionWidth但如果ColumnDefinition被调整的另一个原因

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="1" 
       TextWrapping="Wrap" 
       Text="{Binding ...}" 
       Width="{Binding ElementName=sizingControl, Path=ActualWidth}"/> 
    <Rectangle Name="sizingControl" Grid.Column="1" Visibility="Hidden" /> 
</Grid> 
+0

谢谢,这个伎俩。有趣的事情btw。只有一个提示:使用ActualWidth杀死了我的CPU。使用宽度固定它。 –

+1

使用此“解决方法”通常需要一些测试。有时为“TextBlock”设置边距为1,有时在绑定中使用“FallbackValue”等等,这一切都取决于您的场景。否则,它可以像你注意到的那样进入一个无限大小的循环:) sizingControl被调整大小,以便'TextBlock'更新其'Width',然后调整sizingControl的大小等等。但我确实相信'ActualWidth'应该用于这个工作。 Apprently在您的场景中使用'Width',这非常棒:) –

-1

为此,您需要在父级上设置宽度,或者在包含文本块的父级中放置另一个网格或某个容器。然后设置一个宽度。文本块不会包装在灵活的父级上。

或者更好的是,只需在文本块上设置一个宽度即可。

+0

我知道这种做法会得到更广泛的,但也有一些情况是使它不可能。是不是只有一点财产或什么..? –