隐藏 WPF 扩展器控件的箭头
使用 WPF Expander 控件时,它显示为默认的“向上”和“向下”箭头键。 有什么办法可以隐藏那些向上和向下箭头吗?
更新:
我设法通过创建 ControlTemplate 来删除箭头,但现在扩展能力也消失了:
<ContentPresenter Content="{TemplateBinding Expander.Header}"></ContentPresenter>
<ContentPresenter Content="{TemplateBinding Expander.Content}"></ContentPresenter>
<Expander Template="{StaticResource ExpanderControlTemplate}" IsExpanded="False" Cursor="Hand">
<Expander.Header>
<Border Style="{StaticResource FeedTitleStyle}">
<DockPanel Width="Auto">
<TextBlock DockPanel.Dock="Left" FontSize="16" Text="IronRuby in Action!" />
</DockPanel>
</Border>
</Expander.Header>
<Expander.Content>
<TextBlock Text="This is the decriprion!" />
</Expander.Content>
</Expander>
When using the WPF Expander control it is displayed with the default "Up" and "Down" arrow keys. Is there any way to hide those up and down arrows?
UPDATE:
I managed to remove the arrows by creating a ControlTemplate but now the expanding ability is gone also:
<ContentPresenter Content="{TemplateBinding Expander.Header}"></ContentPresenter>
<ContentPresenter Content="{TemplateBinding Expander.Content}"></ContentPresenter>
<Expander Template="{StaticResource ExpanderControlTemplate}" IsExpanded="False" Cursor="Hand">
<Expander.Header>
<Border Style="{StaticResource FeedTitleStyle}">
<DockPanel Width="Auto">
<TextBlock DockPanel.Dock="Left" FontSize="16" Text="IronRuby in Action!" />
</DockPanel>
</Border>
</Expander.Header>
<Expander.Content>
<TextBlock Text="This is the decriprion!" />
</Expander.Content>
</Expander>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不幸的是,标题的 ExpanderTemplate 内的 ContentPresenter 与箭头位于同一网格中,因此仅设置 HeaderTemplate 对我们没有帮助。
使用 Mole 我们可以看到 ToggleButton 有一个 Ellipse - 代表圆, Path - 代表箭头,ContentPresenter 显示您为 Header 属性设置的内容。
现在我们知道了 Expander 的实际布局,我们可以通过几种方法来修改它。 为扩展器创建一个全新的 ControlTemplate,或者获取我们想要删除的部分并删除/隐藏它们。
更新:掌握了 Blend,在为 Expander 生成模板后,几乎只需要遍历并删除每个 ToggleButton 样式中的 Ellipse 和 Path。
此外,我们可以创建一个 AttachedProperty 并将箭头和圆形部分设置为折叠。
这是我们的 AttachedProperty:
我只是直接前往包含“箭头”和标题内容的网格,而不是尝试按名称查找控件,因此如果您还重新模板化了扩展成不同的结构。 一旦我们找到了包含的网格,我们就可以将箭头和圆圈设置为折叠,并确保标题内容一直移动到左侧。
要使用附加属性,我们只需在 XAML 中的元素上设置它即可:
在代码中:
Unfortunately the ContentPresenter inside the ExpanderTemplate for the header is in the same grid as the arrow, so just setting the HeaderTemplate won't help us.
Using Mole we can see that the ToggleButton has an Ellipse - representing the circle, a Path - representing the arrow, and the ContentPresenter which displays what you set for the Header property.
Now that we know the actual layout of the Expander, there's a few ways we could go about modifying it. Creating a brand new ControlTemplate for the Expander, or getting the parts we want to remove and removing/hiding them.
Update: Got a hold of Blend, after generating a Template for the Expander, it pretty much just requires going through and deleting the Ellipse and Path from each ToggleButton style.
Also, we could create an AttachedProperty and set the arrow and circle parts to be collapsed instead.
Here's our AttachedProperty:
I'm just traveling directly to the grid that contains the 'arrow' and header content, instead of trying to find the controls by name, so this won't work exactly as is if you are also re-templating the expander into a different structure. Once we've located the containing Grid, we can set the Arrow and Circle to be collapsed, and make sure that the Header Content is moved all the way to the left.
To use the attached property we can just set it on the element in XAML:
And in code: