gpt4 book ai didi

wpf - StackPanel 扩展父网格的外部大小

转载 作者:行者123 更新时间:2023-12-04 05:33:38 28 4
gpt4 key购买 nike

我对 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 询问它的 child 他们想要的大小。它不限制它们的大小。 (绑定(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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com