【发布时间】:2012-01-10 16:24:22
【问题描述】:
关于 wpf 中控件布局的“简单”。有一个带有网格的自定义控件,该面板上有一个“面板”,三个元素之间有两个按钮和滑块。右键必须固定在“面板”的右侧,左键必须固定在“面板”的左侧,滑块必须填充按钮之间的所有可用空间。按钮和网格的宽度(和高度)将在之后的代码中设置。问题是 - 我必须使用什么样的“面板”以及如何使它与给定的任务一起操作? (堆栈,停靠 - 即使使用这种“水平分层”也没有这样的功能) 在 WinForms - 没有问题滑块宽度 = widthOfGrid - (widtOfBothButtons) 这可以在wpf中做到吗?或者我必须在一些类似构造函数的函数中编写上面的代码? (offtop-对我来说,这是 wpf 控制的典型任务,我很惊讶它的自动解决方案太少)
代码:
<UserControl x:Class="WpfApplication1.UserControl2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="42" d:DesignWidth="291">
<Grid x:Name="gridCtrl">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="clnmLbl" Width="Auto"/>
<ColumnDefinition x:Name="clnmPnl" />
</Grid.ColumnDefinitions>
<Label x:Name="lblText" Grid.Column="0" Content="" VerticalAlignment="Center">
</Label>
<DockPanel x:Name="pnlDock" Grid.Column="1">
<Button x:Name="btnLeft" HorizontalAlignment="Left" DockPanel.Dock="Left">
</Button>
<Border x:Name="BorderOfSlider" BorderBrush="#FF000000" BorderThickness="3,3,3,3" CornerRadius="8,8,8,8" >
<Slider x:Name="sldSlider" HorizontalAlignment="Stretch" VerticalAlignment="Center" >
</Slider>
</Border>
<Button x:Name="btnRight" HorizontalAlignment="Right" DockPanel.Dock="Right">
</Button>
</DockPanel>
</Grid>
</UserControl>
【问题讨论】:
-
你试过
DockPanel和LastChildFill="True"吗? -
我不需要最后一个子填充。我需要具有这种行为的滑块 - 中心元素