none
控件位置窗体运行和拖拽位置不一致 RRS feed

  • 问题

  • 不知道是不是因为是Surface book高分屏原因

    问题1:在写的时候,把窗体拉大,达到一定程度时按【启动】按钮运行后就不再变大了。

    但是你拖拽的控件是写的时候的位置,有些控件就到了窗体外的位置。

    如果是设置成随窗体右侧移动而移动,那么在窗体外的位置的控件就永远看不到。

    比如我的菜单设置成保持上右位置距离,菜单设置成右边,当窗体拉大一定程度,运行后就会一般菜单在窗口外,再拉大就看不到了

    问题2:怎么设置启动窗体大小。

    2017年3月6日 7:42

全部回复


  • Hi 南极咖啡,

    >>问题1:在写的时候,把窗体拉大,达到一定程度时按【启动】按钮运行后就不再变大了。

    对这个问题的描述不是很明白。也许你可以增加动态图来显示这个过程,会帮助我们更好的分析你的问题。

    你也可以尝试下面的代码。希望会有帮助

         private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                ClearValue(SizeToContentProperty);
                LayoutRoot.ClearValue(WidthProperty);
                LayoutRoot.ClearValue(HeightProperty);
    
            }

    >>问题2:怎么设置启动窗体大小。

    下面的代码也许对你有帮助

        public WPFchangesize()
            {
    
                InitializeComponent();
                const int snugContentWidth = 400;
                const int snugContentHeight = 400;
                var horizontalBorderHeight = SystemParameters.ResizeFrameHorizontalBorderHeight;
                var verticalBorderWidth = SystemParameters.ResizeFrameVerticalBorderWidth;
                var captionHeight = SystemParameters.CaptionHeight;
                Width = snugContentWidth + 2 * verticalBorderWidth;
                Height = snugContentHeight + captionHeight + 2 * horizontalBorderHeight;
            }
    


    Best Regards,

    Yohann Lu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年3月7日 3:11
    版主
  • Hi 南极咖啡

    我也是用Surface Book开发,但是没有遇到你这样的问题。希望可以看到截图或者部分代码这样对于了解你的问题更有帮助。

    问题1:

    请问你用的是什么布局方式?

    Grid,Canvas,StackPanel还是其他

    问题2:

    窗口大小设置有两种方法,第一在Xaml文件中设置,第二在cs文件中设置,一般情况下只需要用一种,除非你需要在Run Time调整窗口大小。

    给你代码示例:

    XAML上设置: 只需要调整Height 和 Width的大小即可

    <Window x:Class="Test.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:Test"
            mc:Ignorable="d"
            Title="MainWindow" x:Name="Root" Height="350" Width="525" Loaded="Window_Loaded">
        <Grid>
           
        </Grid>
    </Window>

    在cs中设置:

    可以参考Yohann Lu方法,他这个400*400是保证Grid的大小,如果你只是希望修改Window的大小那么可以参考如下代码:

        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }

            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                Root.Width = 800;
                Root.Height = 600;
            }
        }

    Best Wishes,
    Lee

    2017年4月19日 5:58