WPF:带有Wrapped文本的TextBlock应该继承宽度

时间:2011-07-05 16:05:53

标签: wpf xaml width

我有以下XAML:

            <StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Border Name="B1" Width="Auto">
                        <DataGrid />
                    </Border>
                    <Border Name="B2" Width="Auto">
                        <DataGrid />
                    </Border>
                </StackPanel>
                <Border Name="B3" Width="Auto">
                    <TextBlock TextWrapping="Wrap"
                               Text="{Binding}"/>
                </Border>
            </StackPanel>

基本上,边界B1和B2并排在顶部,B3在它们之下。 B1和B2根据其内容中的内容动态地改变它们的宽度。我希望B3的宽度是B1和B2宽度的总和,并在TextBlock中包含潜在的长文本。

上面的XAML导致TextBlock中的文本不会换行,这导致B3比B1 + B2宽得多。

我希望B3.width继承主StackPanel的宽度,该宽度将由B1.width + B2.width设置,如果可能,我希望在没有代码的情况下继续。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

<StackPanel x:Name="stk">
    <StackPanel Orientation="Horizontal" x:Name="stk1" HorizontalAlignment="Left" >
        <Border Name="B1"
                Width="Auto">
            <ListBox Width="200" Height="200"></ListBox>
        </Border >
        <Border Name="B2"
                Width="Auto">
            <ListBox Width="200"></ListBox>
        </Border>
    </StackPanel>
    <Border Name="B3"
            Width="{Binding Path=ActualWidth,ElementName=stk1}" HorizontalAlignment="Left">
        <TextBlock TextWrapping="NoWrap"
                   Text="testddddddddddddddddddddddddddddddddddd" />
    </Border>
</StackPanel>