StackPanel的扩大父格的外型尺寸

问题描述 投票:2回答:1

我与WPF相当新的,所以如果道歉,我失去了一些东西明显。我有这个模板绑定到项目中的OBS。采集。我想要得到它,这样的第2列,“测试测试...”部分具有可变宽度填充父网格中的所有可用空间。

什么我发现虽然是我的代码就会自动列出所有文字“测试测试...”,而不是在网格中只是结合的可用空间,而是文本框创建你看到下面的滚动条。

我反而,希望该“考试考试”被切断,使一切适合,这样不会出现滚动条(当,如果用户调整画面,然后说:“测试的测试......”文本框会自动调整以适应新的空间)。有没有办法做到这一点?

我该模板的代码如下:

            <DataTemplate x:Key="MainTemplate">
            <Grid Margin="4" ClipToBounds="True">
                <Grid.Resources>
                    <local:BooleanToHiddenVisibility x:Key="boolToVis"/>
                </Grid.Resources>
                <StackPanel Orientation="Vertical" ClipToBounds="True">
                    <Grid Width="Auto" >
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="25"/>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="60" />
                            <ColumnDefinition Width="40" />
                            <ColumnDefinition Width="60" />
                            <ColumnDefinition Width="40" />
                            <ColumnDefinition Width="60" />
                            <ColumnDefinition Width="40" />
                            <ColumnDefinition Width="40" />
                        </Grid.ColumnDefinitions>
                        <CheckBox Grid.Column="0" Name="checkViewTextBox"/>
                        <TextBlock Grid.Column="1" Text="{Binding OriginalQuote}" FontWeight="Bold" TextTrimming="WordEllipsis" FontStyle="Italic" ClipToBounds="True"/>

                        <TextBlock Margin="10,0,0,0" Grid.Column="2"  Text="plane :" FontWeight="SemiBold" Width="60"/>
                        <TextBlock Margin="5,0,0,0" Grid.Column="3" Text="{Binding Mid}" Width="40"/>

                        <TextBlock Margin="10,0,0,0" Grid.Column="4"  Text="data2 :" FontWeight="SemiBold" Width="60"/>
                        <TextBlock Margin="5,0,0,0" Grid.Column="5" Text="{Binding MidTwo}" Width="40"/>

                        <TextBlock Margin="10,0,0,0" Grid.Column="6"  Text="data3:" FontWeight="SemiBold" Width="60"/>
                        <TextBlock Margin="5,0,0,0" Grid.Column="7" Text="{Binding MidThree}" Width="40"/>

                        <Button Margin="10,0,0,0" Content="History" Grid.Column="8" Click="History_Click" Width="40"/>
                    </Grid>

                    <StackPanel Orientation="Horizontal" Visibility="{Binding Path=IsChecked, ElementName=checkViewTextBox, Converter={StaticResource boolToVis}}">
                        <StackPanel.Resources>
                            <Style BasedOn="{StaticResource tbstyle}" TargetType="{x:Type TextBlock}" />
                        </StackPanel.Resources>
<!--Other stuff thats working ok-->

                </StackPanel>
            </Grid>
        </DataTemplate>

任何帮助深表感谢!

附:我已经添加随机礼仪,希望一会的工夫,因此,如果长得像我在那里随意的事情,这可能是为什么....

wpf
1个回答
3
投票

好了,不知道它会帮助你,但对WPF布局一些话。

它有两个步骤:衡量和安排。

在第一阶段中,控制尝试计算其所需的状态。 StackPanel中询问其孩子他们所需的尺寸。它不限制它们的大小。 (与结合OriginalQoute TextBlock中已没有明确设置宽度!)

在第二阶段中,控制布置。堆叠面板不得侵占列的整个左侧空间,但好像它的大小是无限的它排列其子,使TextBlock中完全显示文本。

现在的问题是如何限制TextBlock的大小?

尝试结合

<TextBlock Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=ActualWidth}"/>
© www.soinside.com 2019 - 2024. All rights reserved.