wpf - StackPanel 扩展父网格的外部尺寸

标签 wpf

我对 WPF 还很陌生,所以如果我遗漏了一些明显的东西,我深表歉意。我有一个绑定(bind)到 obs 中的项目的模板。收藏。我试图让第二列“测试测试...”部分具有可变宽度,填充父网格中的所有可用空间。

我发现,我的代码自动显示“测试测试...”文本框的所有文本,而不是仅绑定(bind)到网格中的可用空间,而是创建滚动条你看下面。

enter image description here

相反,我希望切断“测试测试”,以便其他所有内容都适合,这样就不会出现滚动条(当用户调整屏幕大小时,“测试测试...”文本框将自动调整大小以适应新空间)。有办法做到这一点吗?

该模板的代码如下:

            <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 布局的说明。

它有两个步骤:测量和排列。

在第一阶段,控件尝试计算其所需的状态。 StackPanel 询问其子级所需的大小。它不限制它们的大小。 (绑定(bind)到 OriginalQoute 的 TextBlock 没有显式设置宽度!)

第二阶段,安排控制。 允许堆栈面板占据列的整个左侧空间,但它排列其子级就好像其大小不受限制,因此 TextBlock 完全显示文本。

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

尝试绑定(bind)

<TextBlock Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=ActualWidth}"/>

关于wpf - StackPanel 扩展父网格的外部尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267316/

相关文章:

c# - 同时执行两个独立的方法

c# - 以下方法或属性之间的调用不明确 : 'EntitiesLan.EntitiesLan()' and 'EntitiesLan.EntitiesLan()'

wpf - MVVM - ListBox SelectedItem 绑定(bind)属性变为空

c# - 有什么命令可以立即更新用户界面吗?

wpf - 自定义控件依赖属性集合,计算嵌套控件项

.net - 如何使用 double 组的资源制作wpf组合框?

c# - 翻转滚动条 WPF

执行耗时的方法时 WPF 标签未更新

c# - 如何允许从 Windows 资源管理器拖放至 C# WPF 应用程序?

wpf - ListView.ItemTemplate中的SharedSizeGroup