繁体   English   中英

为什么Visual Studio的设计师与运行时看到的不匹配?

[英]Why Doesn't Visual Studio's Designer Match What I See At Runtime?

我是WPF的新手,并使用Visual Studio(2015)的设计视图来创建示例应用程序。 在设计时,一切看起来都像我想要的: 设计时间图像

但是当我运行应用程序时,它看起来完全不同。 运行时图像

我发现了一个类似但不完全相同的问题( WPF窗口的运行时视图与Expression Blend的设计视图不匹配 ),在Blend中创建的布局在运行时不匹配。 这个问题( 设计模式和运行时的不同外观 )但涉及动态资源。

我没有做任何聪明的事情,只是一个网格和控件。 我没有用模板修改任何外观。 我已经使用了拖放功能,所以我的网格可能有点草率......但我真的希望它能匹配。

难道我做错了什么? 设计师与运行时不匹配似乎很疯狂......下面是我的代码。

<Window x:Class="Chap01_01.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:Chap01_01"
        mc:Ignorable="d"
        Title="Customer" Height="160" Width="350" ShowInTaskbar="true" ResizeMode="NoResize" Topmost="True" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="35"/>
            <RowDefinition Height="35"/>
            <RowDefinition Height="25"/>
            <RowDefinition Height="100*"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="87"/>
            <ColumnDefinition Width="85"/>
            <ColumnDefinition Width="43"/>
            <ColumnDefinition Width="35"/>
            <ColumnDefinition Width="94"/>
        </Grid.ColumnDefinitions>
        <Label Content="_First Name" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" Target="{Binding ElementName=firstName}" VerticalAlignment="Center" />
        <TextBox x:Name="firstName" Grid.Column="1" Grid.Row="0" Margin="5,5,5,5" VerticalContentAlignment="Center" Grid.ColumnSpan="4"/>

        <Label Content="_Last Name" Grid.Column="0" Grid.Row="1" Margin="5,5,5,5" Target="{Binding ElementName=lastName}" VerticalAlignment="Center" />
        <TextBox x:Name="lastName" Grid.Column="1" Grid.Row="1" Margin="5,5,5,5" VerticalContentAlignment="Center" Grid.ColumnSpan="4"/>

        <RadioButton x:Name="radioButton" Content="EU Citizen" Grid.Column="1" Margin="5,5,5,5" Grid.Row="2" VerticalContentAlignment="Center" Grid.ColumnSpan="2"/>
        <RadioButton x:Name="radioButton2" Content="Non EU Citizen" Grid.Column="3" Margin="5,5,5,5" Grid.Row="2" VerticalContentAlignment="Center" Grid.ColumnSpan="2"/>
        <Button x:Name="okay" Content="Okay" Grid.Column="4" HorizontalAlignment="Right" Margin="0,0,5,5" Grid.Row="3" VerticalAlignment="Bottom"  Width="75"/>
        <Button x:Name="cancel" Content="Cancel" Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,0,5" Grid.Row="3" VerticalAlignment="Bottom"  Width="75" Grid.ColumnSpan="2"/>
    </Grid>
</Window>

我真的找不到任何可以说为什么...但我确实找到了一个单词。

在窗口属性中添加SizeToContent =“WidthAndHeight”...在预览和调试中看起来很美味。

您需要确保这些情侣对匹配:

  1. 高度宽度
  2. d:DesignHeight / d:DesignWidth

这是DesignWidth和Width之间区别 ,基本上两者都是设计器的一个,而实际运行时应用程序的一个。

所有这些都应该在UserControl中设置。 查看UserControl Xaml或Window Xaml的最后一行,添加缺少的内容+确保它们匹配。 还有祝你好运!

必须是在设计视图中,与发布版本相比,维度的起始参考点的位置不同。 我在C ++ / C#中经历了类似的事情,我唯一的解决方法是测试几个小时并应用更正,最终使设计在修复发布版本时显得不正确。

我希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM