【问题标题】:Custom GridSplitter not resizing自定义 GridSplitter 未调整大小
【发布时间】:2017-12-12 14:41:05
【问题描述】:

我想用一些自定义代码模板化我的GridSplitter,但是当我覆盖ControlTemplate 时它似乎停止工作。

我的代码如下所示:

<Style x:Key="Vertical_GridSplitter" TargetType="{x:Type GridSplitter}" BasedOn="{StaticResource {x:Type GridSplitter}}">
    <Setter Property="BorderBrush" Value="Transparent" />
    <Setter Property="Background" Value="Orange" />
    <Setter Property="HorizontalAlignment" Value="Left" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="Margin" Value="0,5,0,5" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type GridSplitter}">

                <Border BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="0"
                        Background="{TemplateBinding Background}"
                        Width="3"
                        HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                        VerticalAlignment="{TemplateBinding VerticalAlignment}">

                </Border>
            </ControlTemplate>                
        </Setter.Value>
    </Setter>
</Style>

我确定问题出在此处,而不是 View 本身,因为如果我使用默认的 GridSplitter 而不使用我的样式,它就可以正常工作。使用我的代码,样式被应用,鼠标光标像它应该的那样变成箭头,但是点击GridSplitter并拖动它什么都不做......

【问题讨论】:

  • 摆脱 Margin setter 和 Width="3" ?如果您的问题,请提供回购:stackoverflow.com/help/mcve。恐怕在不提供回购协议的情况下声称“它不起作用”没有多大意义。
  • 它会改变什么?我希望 GridSplitter 看起来像这样。正如我所说,样式被正确应用,只是它不像 GridSplitter 那样工作(不提供通过拖动来调整其他内容大小的功能)。

标签: wpf xaml controltemplate wpf-style gridsplitter


【解决方案1】:

自己找到了答案。问题出在这里:

<Setter Property="HorizontalAlignment" Value="Left" />

应该是:

<Setter Property="HorizontalAlignment" Value="Stretch" />

【讨论】:

  • 我的意思是,您的问题中除了样式之外没有包含任何内容。没有关于如何在 Grid 中使用实际 GridSplitter 的示例。我在第一条评论中发布了一个链接。我鼓励你阅读它。祝你好运,祝你有美好的一天。
猜你喜欢
  • 2016-08-23
  • 2014-05-22
  • 1970-01-01
  • 2016-05-29
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多