如何在滑块位于StackPanel内时展开Slider以填充可用空间

sli*_*ide 4 wpf slider stackpanel

在a Slider中插入Grid会扩展它以填充可用空间,但我不希望使用网格,原因如下:

我有一个TextBlockSliderUserControl,滑块装有弹簧,做慢跑/穿梭; 必须显示当前值,因为用户不能依赖中性光标的位置,所以文本块.实现**Orientation**这个自定义滑块的属性需要旋转两个组件,并调整它们的相对位置(左/右或上/下),这对于网格来说并不容易(除非我错过了明显的东西)用一个StackPanel.

回应Aviad的评论

Aviad,谢谢,我为痛苦道歉;-)问题出现在标题中:当滑块位于StackPanel内时,如何扩展Slider以填充可用空间?

这个用户控件:

<UserControl x:Class="XXX.Preview.SelectionView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="auto" Width="auto">
    <GroupBox Header="Selected">
        <StackPanel Orientation="Horizontal">
            <TextBlock/>
            <Slider/>
        </StackPanel>
    </GroupBox>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

即使在具有"*"宽度的行中,也不会在包含在网格中时展开.滑块根本没有长度.

一个解决方案是在下面的代码中用网格替换堆栈面板,但我不想使用网格,因为我需要使用堆栈面板的Orientation属性来显示封闭用户控件时垂直堆叠的控件在方向"垂直"中设置.

小智 5

绑定非常简单!请注意,StackPanel为Horizo​​ntalAlignment ="Stretch"和绑定所引用的名称

            <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Top" Orientation="Horizontal" Name="ParentPanel">
                <Slider Minimum="1" Maximum="999999" Interval="3" Width="{Binding Path=ActualWidth, ElementName=ParentPanel}"></Slider>
            </StackPanel>
Run Code Online (Sandbox Code Playgroud)

归功于 @ somedust

请点击此链接以查看类似问题,并了解如何使用转换器更好地控制绑定.


vik*_*iky 0

使用 DockPanel 而不是 StackPanel 可以更好地完成这件事。你可以尝试一下。

检查这个: http://msdn.microsoft.com/en-us/library/bb628664.aspx

http://www.wpftutorial.net/DockPanel.html