5

私は Visual Studio 2012 と WPF で最も厄介な問題を抱えており、助けを求めていました。グリッドのセルを含む TextBlocks などの子要素を持つ単純なグリッドがあります。TextBlocks は、セル内に相対的に配置されるように設定されています (たとえば、Left の Horizo​​ntalAlignment を使用)。あえてグリッドの列または行のサイズを変更するまで、すべて問題ありません。次に、Visual Studio は、親/子要素の結果の位置に合わせて、Margin および Width/Height 属性を挿入します。これはすべて静かに行われ、後で列のサイズをさらに縮小することにした場合、挿入された Margin 属性が原因で突然 TextBlock が切り取られてしまうまで気がつきません。すべての子要素を調べて、これらの余分な属性を手動で削除する必要があります。現在のプロジェクトでこれを100回近く行う必要がありましたが、Web上でVisual Studioにバックオフを指示し、達成しようとしている素敵なフォーマットを盗むこれらの自由を取るのをやめる方法を見つけることができません. 参照用のコード スニペットを次に示します。しかし、これは私のプロジェクトのグリッドのさまざまなインスタンスで発生しました。

<Grid  Canvas.Left="435" Canvas.Top="138" Height="61" Width="192">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="11*"/>
        <ColumnDefinition Width="21*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>

    <TextBlock Grid.Row="0" Grid.Column="0" Text="Subtotal:" HorizontalAlignment="Right" VerticalAlignment="Center"  />
</Grid>

...そして、列 0 のサイズ変更後:

<TextBlock Grid.Row="0" Grid.Column="0" Text="Subtotal:" HorizontalAlignment="Right" VerticalAlignment="Center" Height="16" Margin="0,7" Width="47"  />

確かに、この問題を経験した人は他にもいます。助けてください!

ありがとう

4

4 に答える 4

2

簡単な解決策は、視覚的な参照以外の目的でデザインサーフェスを使用しないことです。

テキストエディタを使用します。そうしないと、XAMLを実質的に制御できません。デザインサーフェスにコントロールをドラッグ/ドロップすると、マージンや配置などが自動的に設定されるのは非常に面倒です。

私の見方-XAMLのすべてが自動スケーリングする必要があります-絶対値を設定する必要があるのは、絶対にそのサイズにする必要がある場合だけです...それでも、スタイル(たとえば、標準ボタンはアプリケーション全体の幅に合わせて拡大縮小する必要がないため、明示的なサイズでもかまいません...)、レイアウトには使用せず、常にマージンを使用してアイテムにマージンを設定する必要があります(これはデザイナーのようです)大丈夫だと思う)

デザインサーフェスを参照として使用します-要素をクリックすることもでき、XAMLコードはクリックしたアイテムと同期します(ほとんどの場合)-しかし、神の愛のために、何もドラッグしないでください。傷ついた世界にいる!

于 2012-10-10T15:20:23.083 に答える
0

すべての側面のすべての要素にマージンを設定し、リセットされた場合は再度設定します。マージンを設定しないと、XAML デザイナーはマージンとスパンの両方を挿入し、すべてが壊れます。

于 2013-06-15T19:10:55.437 に答える