首页 > 解决方案 > 如何在 WPF C# 中的父控件顶部设置控件位置?

问题描述

我不知道如何在 WPF 中的 ParentView(StackPanel) 顶部设置图像。

这是我的 XAML 代码:

<StackPanel Orientation="Horizontal" Width="280" Margin="0 0 0 16" VerticalAlignment="Top"
            cal:Message.Attach="[MouseEnter] = [NavigationMenuItemMouseEnter()]; [MouseLeave] = [NavigationMenuItemMouseLeave()]">
            <Image x:Name="MenuIcon" Source="{Binding ImageName}" Width="25" Height="22" Margin="30 0 0 0" />
            <ListBoxItem x:Name="ListViewItemMenu" Content="{Binding Path=Header}" 
                         Visibility="{Binding ListViewItemVisible, Converter={StaticResource BoolToVisConverter}}"
                         FontSize="20" Style="{DynamicResource NoEffectHoverListBoxItem}" 
                         HorizontalContentAlignment="Center" Padding="25 0"
                         Foreground="{Binding TitleForegroundColor}" />
            <Expander x:Name="ExpanderMenu" Header="{Binding Path=Header}" 
                      Visibility="{Binding ExpanderVisible, Converter={StaticResource BoolToVisConverter}}"
                      IsExpanded="False" Width="210" HorizontalAlignment="Right" 
                      Background="{x:Null}" Foreground="{Binding TitleForegroundColor}" 
                      FontSize="20" Padding="25 0"
                      Style="{DynamicResource ArrowlessExpanderTemplate}"
                      PreviewMouseLeftButtonDown="Expander_PreviewMouseLeftButtonDown">
                <ListView x:Name="ListViewMenu" ItemsSource="{Binding Path=SubItems}" 
                          Background="Transparent" Foreground="White" BorderThickness="0"
                          ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                          ScrollViewer.VerticalScrollBarVisibility="Disabled"
                          Height="210">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Grid MouseEnter="SubMenuMouseEnter" MouseLeave="SubMenuMouseLeave">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="3"/>
                                    <ColumnDefinition Width="100*"/>
                                </Grid.ColumnDefinitions>
                                <Grid Name="SubMenuItemBar" Background="{DynamicResource White_200}" Margin="0 10 0 8" Visibility="Hidden"/>
                                <Grid Grid.Column="1" Margin="6 0">
                                    <TextBlock Text="{Binding Path=Name}" Padding="0 5" />
                                </Grid>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Expander>
        </StackPanel>

这个 xaml 显示如下。 XAML 代码

正如我们在这里看到的,当我单击扩展器时,会显示列表并且扩展器和列表正在滚动,但图像的位置是静态的。所以我希望改变父视图顶部的位置(堆栈面板)

请让我知道如何解决这个问题。先感谢您。

标签: c#wpfxaml

解决方案


答案是在 Image 中添加 VerticalAlignment="Top"。

<Image x:Name="MenuIcon" Source="{Binding ImageName}" Width="25" Height="22" Margin="30 0 0 0" VerticalAlignment="Top"/>

推荐阅读