如何解决悬浮在wpf .net核心应用程序中程序右侧的浮动控制按钮
我目前正在开发一款应在整个程序窗口中显示Image
的软件。 Button
应该浮在顶部,以控制软件。
浮动Button
与ZIndex
配合使用非常好,但问题是它要么卡在左上角,要么固定在一个静态位置。
该想法应坚持正确的程序边界。调整程序的大小后,它仍应坚持正确的边界。 我尝试了“水平对齐”,但完全没有效果。
到目前为止,这是xaml:
<Window x:Class="TarkovMapper_2._0.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TarkovMapper_2._0"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid HorizontalAlignment="Stretch" Width="Auto" Height="Auto" VerticalAlignment="Stretch">
<Image Grid.ZIndex="1" x:Name="Map_Image" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<DockPanel Grid.ZIndex="2" Width="Auto" Height="Auto" HorizontalAlignment ="Right" VerticalAlignment="Top" >
<Button DockPanel.Dock="Right" Grid.ZIndex="2" x:Name="Edit_Button" Content="Button" HorizontalAlignment="Right" VerticalAlignment="Center" Width="50" Height="49"/>
</DockPanel>
</Grid>
</Window>
看来DockPanel
是正确的方法,但是DockPanel
本身在自动模式下的大小与按钮的大小相同(然后自身粘在顶部/左侧,或者我可以静态调整其大小,但然后它不会随应用程序调整大小。
解决方法
您可以使用另一个Grid
来做到这一点,该Button
的一列包含<Grid>
<Image x:Name="Map_Image"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" x:Name="Edit_Button" Content="Button" Width="50" Height="49"/>
</Grid>
</Grid>
和您想要以重叠显示在窗口右边缘的其他控件。
ZIndex
您在这里不需要Grid
,因为内部Grid
是父Grid
的最后一个孩子,它将自动显示在顶部。覆盖Button
有两列,其中第二列的大小为其内容(smart-open
)的大小,而第一列将占用剩余的空间。
还有许多其他选项可以创建所需的布局,但这取决于您要实现的目标。根据您的描述,这种方法似乎很合适。
,添加网格列并分配它们。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" />
<Button Grid.Column="1" HorizontalAlignment="Right">...</Button>
</Grid>
或者有Dock,可以为您解决问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。