如何在WPF中缩放滑块?

3
当您将例如 Button 放在 DockPanel 中时,按钮边界会被拉伸,但按钮内部的文本不会被缩放。
因此,我使用 ViewBox 作为一种简单的缩放方式——这样(例如)按钮边界会被放大,文本本身也会被放大。
不幸的是,当 Slider 放在 DockPanel 中时,它的行为类似于按钮——它的边界被拉伸,但标尺和旋钮仍然很小。将其放置在 ViewBox 中时,旋钮被正确缩放,但标尺没有被放大,相反——它被最小化了。
那么如何正确地放大滑块?
我有一个带有几个控件的窗口。当我调整窗口大小时,我希望内容也随之调整,意味着控件应该占用更多的空间,文本、图像、图标等也应该变大。
例如,简化示例但显示了想法——我有两个按钮围绕着滑块,如下所示:

[-] ------||-- [+]

按钮按预期缩放,滑块旋钮也是如此,但滑块的标尺根本看不见。在 Visual Studio 中编写此代码时,也很明显缩放出了问题,因为围绕滑块的焦点框太小了。
<Grid>
    <DockPanel>
        <Viewbox DockPanel.Dock="Left">
            <Button Padding="0">-</Button>
        </Viewbox>
        <Viewbox DockPanel.Dock="Right">
            <Button Padding="0">+</Button>
        </Viewbox>
        <Viewbox  DockPanel.Dock="Left">
            <Slider VerticalAlignment="Center"></Slider>
        </Viewbox>
    </DockPanel>
</Grid>

添加代码示例 - Mak Ahmed
1个回答

2

Stretch 属性设置为 Fill,并设置 SliderWidth。这将影响旋钮的宽度。

<Grid>
    <DockPanel>
        <Viewbox DockPanel.Dock="Left">
            <Button Padding="0">-</Button>
        </Viewbox>
        <Viewbox DockPanel.Dock="Right">
            <Button Padding="0">+</Button>
        </Viewbox>
        <Viewbox Stretch="Fill" DockPanel.Dock="Right">
            <Slider Width="100"></Slider>
        </Viewbox>
    </DockPanel>
</Grid>

enter image description here


谢谢,但它并没有按预期工作。这个缩放的目的是将整个内容缩放到窗口大小,而窗口由用户调整大小。如果我为滑块设置固定值,它只能匹配给定窗口大小。在任何其他情况下,它都会被错误地缩放(向下或向上)。同时设置宽度会产生奇怪的结果——旋钮和标尺的大小表现得像相反的东西。例如,将宽度设置为20时,我有一个巨大的旋钮和短的标尺,将宽度设置为200时,我有一个更长的标尺,但微小的旋钮。 - astrowalker

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