在WPF窗口中修改调整手柄的光标(“CanResizeWithGrip”+“WindowStyle:none”)

5
似乎没有其他StackOverflow问题回答这个特定的问题。或者我的搜索技巧不好……
我有一个使用WPF / C#编写的应用程序("CanResizeWithGrip" + "WindowStyle =“ none”")。应用程序只能横向调整大小(MaxHeightMinHeight相同),所以我希望ResizeGrip的光标变为ScrollWE(仅水平),而不是默认的对角线光标。
用户在光标提示可以进行垂直调整大小时会尝试垂直调整大小。
我尝试通过使用下面的代码修改控件模板,但是然后整个窗口消失了,我只剩下了resizegrip UI-仍然是对角线光标!
<Window.Template>
    <ControlTemplate TargetType="Window">
        <ResizeGrip Cursor="ScrollWE" />
    </ControlTemplate>
</Window.Template>

调整大小功能正常工作,窗口的样式也正常(当我不使用上面的ControlTemplate时)。我只需要更改出现在ResizeGrip上的光标。如何做到这一点?欢迎提供方向提示(完整答案更好 : ))。
编辑:Hans在评论中是正确的。我错误地在我的ControlTemplate试验中使用了ScollSE(我现在已经修复了这个问题)。

1
无法理解这个,ScrollSE 是一个“角落”光标。 - Hans Passant
你是对的Hans,修正了问题,并在你的评论中点赞... - SGershon
1个回答

3
如果我使用以下标记创建一个窗口:
<Window x:Class="PocketExample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <DockPanel>
        <ResizeGrip DockPanel.Dock="Bottom" Cursor="SizeWE"/>
    </DockPanel>
</Window>

我获得了正确的光标。这对你不起作用吗?你真的在使用ScrollSE光标吗?正如Hans所指出的,那是一个对角线光标,这就解释了为什么你得到了一个对角线光标。


是的,即使使用ControlTemplate,我仍然可以看到ScrollWE时的对角光标。关于您的示例,当我添加自己的resizegrip时,如何将其与窗口的调整大小联系起来? 我使用网格,所以我将您的示例改为 <ResizeGrip Grid.Column="3" Cursor="ScrollWE" VerticalAlignment="Bottom" /> (Column = 3是最后一列)。它没有调整窗口的大小,可能是因为它仅在列上工作(顺便说一下,这是一个固定大小的列)。 发生的情况是窗口被拖动(移动)。 - SGershon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接