0

それは私の最初の WPF プロジェクトであり、この問題に到達するまで楽しんでいます。私は自分の意志でフォームをデザインしました。ビジュアルスタジオではこんな感じ。

ここに画像の説明を入力

しかし、Visual Studio からデバッグすると、歪んだビューが表示されます。以下のスクリーンショット。

ここに画像の説明を入力

しかし、.exeファイルを見つけてダブルクリックするか、単にctrl+F5Visual Studio を押すと、必要な出力/ビューが表示されます。誰が何が起こっているのか教えてもらえますか?

4

1 に答える 1

0

これは、あなたが描いたものと同様の出力を生成する XAML です。

<Window x:Class="MiscSamples.Layout"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Layout" Height="300" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height=".5*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition Height=".5*"/>
        </Grid.RowDefinitions>

        <Button Grid.Row="0" Grid.Column="0" Margin="2" Content="Source1"/>
        <Button Grid.Row="0" Grid.Column="1" Margin="2" Content="Source2"/>
        <Button Grid.Row="0" Grid.Column="2" Margin="2" Content="Target"/>

        <TextBox Grid.Row="1" Grid.Column="0" Margin="2"/>
        <TextBox Grid.Row="1" Grid.Column="1" Margin="2"/>
        <TextBox Grid.Row="1" Grid.Column="2" Margin="2"/>

        <DataGrid Grid.Row="2" Grid.ColumnSpan="2" Grid.RowSpan="2" Margin="2"/>

        <CheckBox Grid.Row="2" Grid.Column="2" Margin="2" VerticalAlignment="Top" Content="Select All"/>

        <Button Grid.Row="3" Grid.Column="2" Margin="2"/>
    </Grid>
</Window>
  • デザイナーが生成した XAML をすべて削除し、それに置き換えます。
  • この XAML は、解像度に依存しない出力を生成します。すべての UI 要素を使用可能なウィンドウ/画面サイズに拡大します。
  • Visual Studio WPF デザイナーは、解像度に依存しないコンテンツを生成しないことに注意してください。したがって、それはまったく役に立たず、誰もそれを使用しません。
  • XAML を記述することは快適な作業であり、winform などのくだらない恐竜テクノロジで UI を手作業でコーディングするよりもはるかに優れています。そのため、Winforms にはビジュアル デザイナーが必要ですが、WPF には必要ありません。
  • また、アプリケーションのロジックのコーディングを開始する前に、「WPF の考え方」を開始することの意味について@Rachel の優れた説明を参照し、 MVVM設計パターンも確認することをお勧めします。
于 2013-06-04T15:33:23.017 に答える