我有一个堆栈面板,其中有一个“几何”按钮,一个文本块和两个“平面按钮” ..即使我给每个元素单独的水平对齐方式,它们似乎都是从我的左手方向堆叠的。 >
我希望我的Geometry(图形)按钮和Text(文本)块与堆栈面板的左侧对齐,而Flat(平角)按钮与堆栈面板的右侧对齐。
截至目前,它们都从左侧按各自的顺序排列
为什么XAML没有选择我的定位?我能做些什么?
感谢您的帮助
这是我的代码
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,10,0,0">
<GeometryButton Command="{}"
Geometry="{StaticResource {}"
ToolTip="{}"
HorizontalAlignment="Left"/>
<TextBlock
Text="{}"
Style="{}"
Margin="0,10,10,10"
Foreground="Black"
HorizontalAlignment="Left"/>
<FlatButton Command="{}"
Content="{}"
Style="{}"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
IsDefault="True"
Margin="0"
MinWidth="80"
HorizontalAlignment="Right"
/>
<FlatButton Command="{}"
Content="{}"
Style="{}"
VerticalAlignment="Center"
HorizontalContentAlignment="Center"
MinWidth="80"
Margin="10,0,0,0"
HorizontalAlignment="Right"
/>
</StackPanel>
编辑:- 我的预期输出如下所示...
使用网格也不是我的选择
-------------------------------------------------------------------
| [Geo Button] [Text Block] [Flat Button][Flat Button]|
| |
| |
| |
-------------------------------------------------------------------
答案 0 :(得分:1)
如果您的预期输出是这样的:
--------------------------------------
| [Geo Button] |
| [Text Block] |
| [Flat Button]|
| [Flat Button]|
--------------------------------------
然后,您需要将Orientation
更改为Vertical
,而不是Horizontal
。
但是,如果您要这样做:
--------------------------------------
| [Geo Button] [Flat Button]|
| [Text Block] [Flat Button]|
--------------------------------------
它是:
Margin
中的Flat Button
(我个人不建议这样做);或Grid
或DockPanel
,尝试在here中查找代码和更多说明我用此部分输出了您的预期输出:
<Grid Height="100" Background="Red">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0">
//...
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right">
//...
</StackPanel>
</Grid>
部分,因为我没有FlatButton
和Geo Button
的资源,所以我只使用常规的Button
。 请注意,您需要将VerticalAlignment
的{{1}}属性设置为Center
。
答案 1 :(得分:0)
您可以将StackPanel
与列定义一起使用,而不是Grid
。示例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button
Grid.Column="0"
Margin="8"
VerticalAlignment="Center"
Content="Button1"/>
<TextBlock
Grid.Column="1"
Margin="8"
Text="TextBlock"
Style="{Binding}"
Foreground="Black"
VerticalAlignment="Center"/>
<Button
Grid.Column="3"
Margin="8"
Content="Button2"
VerticalAlignment="Center"/>
<Button
Grid.Column="4"
Margin="8"
Content="Button3"
VerticalAlignment="Center"/>
</Grid>
已编辑
另一种解决方案:
<DockPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
<Button Content="Geo Button" VerticalAlignment="Center" Margin="6"/>
<Button Content="Text Block" VerticalAlignment="Center" Margin="6"/>
</StackPanel>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Button Content="Flat Button" VerticalAlignment="Center" Margin="6"/>
<Button Content="Flat Button" VerticalAlignment="Center" Margin="6"/>
</StackPanel>
</DockPanel>
答案 2 :(得分:0)
一个DockPanel
应该可以工作。试试这个:
<DockPanel Margin="0,10,0,0">
<Button HorizontalAlignment="Left" Content="GeoButton" Height="20" DockPanel.Dock="Left"/>
<TextBlock Foreground="Black" VerticalAlignment="Center" Text="TextBlock" DockPanel.Dock="Left"/>
<Button HorizontalAlignment="Right" Content="Flat Button1" Height="20" DockPanel.Dock="Right"/>
<Button HorizontalAlignment="Right" Content="Flat Button2" Height="20" DockPanel.Dock="Right"/>
</DockPanel>