我与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布局一些话。
它有两个步骤:衡量和安排。
在第一阶段中,控制尝试计算其所需的状态。 StackPanel中询问其孩子他们所需的尺寸。它不限制它们的大小。 (与结合OriginalQoute TextBlock中已没有明确设置宽度!)
在第二阶段中,控制布置。堆叠面板不得侵占列的整个左侧空间,但好像它的大小是无限的它排列其子,使TextBlock中完全显示文本。
现在的问题是如何限制TextBlock的大小?
尝试结合
<TextBlock Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=StackPanel}, Path=ActualWidth}"/>