代码之家  ›  专栏  ›  技术社区  ›  Over Killer

StackPanel在物理设备上消失,但在模拟器中可见

  •  0
  • Over Killer  · 技术社区  · 10 年前

    我已经使用StackPanel WPF控件创建了一个带有图像的侧边栏。我将模拟器设置为23英寸和1920x1080,设备为42英寸,分辨率也为1920x1080。在模拟器中,StackPanel可见,而在设备上则不可见。

    XAML代码:

    <StackPanel Height="1080" Margin="0,0,300,0" VerticalAligment="Top" Margin="1620,0,0,0"/>
    ...rest of StackPanel XAML code...
    

    为什么会这样?为什么会消失?

    1 回复  |  直到 10 年前
        1
  •  1
  •   pushpraj    10 年前

    可能您需要使用一些其他技术来向右对齐,因为指定边距、宽度等财产在不同设备上的计算可能不同

    阅读更多信息 DPI and Device-Independent Pixels

    你可以试试

    <StackPanel Height="1080" VerticalAligment="Top" Width="300" HorizontalAlignment="Right"/>
    

    也许更好的方法是使用网格来正确对齐

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="300" />
        </Grid.ColumnDefinitions>
        <!--your content-->
        <StackPanel Grid.Column="1" />
    </Grid>
    

    您还可以选择定义尺寸单位,即英寸,以保持各种设备的尺寸一致

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="2in" />
        </Grid.ColumnDefinitions>
        <!--your content-->
        <StackPanel Grid.Column="1" />
    </Grid>
    

    因此,这将确保每个设备上的堆叠面板始终为2英寸