wpf的treeview显示item时候不能stretch的一个解决办法
2016-10-22 01:46
351 查看
最近在帮朋友用wpf实现一个功能的时候遇到了treeviewitem总是默认最短的问题(对于我这次的功能是个问题),而且发现在网上很难找到解决办法(挺难的,网上找样式的时候还得要试一试,尤其是刚开始的时候,我真的看不懂wpf的样式代码……,真的跟摸着石头过河的赶脚,这个地方建议还是懵逼状态的朋友用一下blend,会有帮助,就是blend有时候安装的时候可能直接不能用,自己这边好像是把blend的一个开发包删了之后莫名其妙的能用了)。但是写代码有时候就是灵光一闪的事情,就在我踏破铁鞋google还有在其他的英文网站也找不到答案的时候,眼睛扫到代码里的一个单词:Auto。
默认最短,不就是textblock的宽度是自适应的吗?就在这个时候我就觉得貌似我找到问题的症结了,于是开始看代码(一开始只是眼睛扫到了,我也不知道auto在哪……),无关项去掉之后如下:
创建这个style的原因是为了让treeview默认全部展开,然而以上的代码段是自动生成的,而我没有做任何更改,该style传给treeview的ItemContainerStyle。可以看到默认这个grid被分为三列了,第一列是treeview的折叠按钮,第二列是我们的HierarchicalDataTemplate所展现的位置ContentPresenter,而它是Auto的……
发现了这个之后我就把这个第二列去掉了,itemhosts的ColumSpan=2去掉之后,发现treeview是满屏的了,问题解决了。
希望对不太了解wpf的朋友们有点帮助,睡觉……
默认最短,不就是textblock的宽度是自适应的吗?就在这个时候我就觉得貌似我找到问题的症结了,于是开始看代码(一开始只是眼睛扫到了,我也不知道auto在哪……),无关项去掉之后如下:
<Style x:Key="TreeViewItemStyle" TargetType="{x:Type TreeViewItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TreeViewItem}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition MinWidth="19" Width="Auto"/> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition/> </Grid.RowDefinitions> <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{TemplateBinding IsExpanded}" Style="{StaticResource ExpandCollapseToggleStyle}" IsEnabled="False" Visibility="Collapsed" d:IsHidden="True" HorizontalContentAlignment="Stretch"/> <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> <ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> </Border> <ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
创建这个style的原因是为了让treeview默认全部展开,然而以上的代码段是自动生成的,而我没有做任何更改,该style传给treeview的ItemContainerStyle。可以看到默认这个grid被分为三列了,第一列是treeview的折叠按钮,第二列是我们的HierarchicalDataTemplate所展现的位置ContentPresenter,而它是Auto的……
发现了这个之后我就把这个第二列去掉了,itemhosts的ColumSpan=2去掉之后,发现treeview是满屏的了,问题解决了。
希望对不太了解wpf的朋友们有点帮助,睡觉……
相关文章推荐
- ListView或GridView嵌入ScrollView中时,只显示一个Item并且默认将此Item置顶的问题解决办法
- GridView 自定义Item大小的时候第一个Item显示不正常的解决办法
- ActiveX在MDI子窗体上不能正确显示的一个解决办法
- android中的textview显示汉字不能自动换行的一个解决办法
- WPF TreeView叶子太多时显示很慢的解决办法
- android ListView中只显示一个item问题的两种解决办法
- android中的textview显示汉字不能自动换行的一个解决办法
- 在家看一个cms的源代码,发现导航栏由于栏目太多不能显示的问题,在网上找的解决办法
- 我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题,error C2471--解决办法
- 创建ASP.NET程序时候发生错误"HTTP/1.0 500 Server Error"的一个解决办法
- chm 不能显示 的解决办法
- 关于Delphi中RS Float字段只有4位及OADateTime不能显示到秒的解决办法
- 创建ASP.NET程序时候发生错误"HTTP/1.0500ServerError"的一个解决办法
- 关于水晶报表不能即时更新报表内容的一个奇怪的解决办法
- 关于CListCtrl控件更新Item的闪烁问题和一次插入大容量数据的显示问题解决办法
- 刚发现了一个问题,关于vs2005 datagridview的,我发现在设计行标头的HeaderCell.Value的时候要是设置RowTemplate.Height 的值>= 17则行标头的那个黑三角就显示出来了,要是小于17就不能显示了,想问问大家,是怎么回事?
- WASD5.X中log4j不能显示日志的解决办法
- 不能显示隐藏文件的解决办法
- 层不能跨框架(包括TEXTAREA)显示的解决办法
- 小结mysql 不能显示中文的解决办法