0

プログラムで生成しているオブジェクトのグリッドがあります。

テストの目的で、グリッド内の各セルは、子がImageオブジェクトであるBorderオブジェクトです。各セルは隣接するセルと同じ高さに配置され、完全に表示されます。

各ImageオブジェクトをButtonオブジェクトに置き換えると(各セルは引き続きBorderオブジェクトであり、Imageではなく子用のButtonがあります)、セル間に顕著なギャップが表示されます。

マージンやパディングなどを0に設定してみました。

ボタンをこのように動作させるユニークな点は何ですか?どうすればそれを克服できますか?

4

2 に答える 2

1

Marginコントロールテンプレートで定義されています。次の手順に従って変更できます。

デザイナのボタンを右クリックして、コンテキストメニューからEdit Template>を選択します。Edit a Copy...

コンテキストメニュー

ダイアログで、新しいスタイルの名前を選択し、配置する場所を選択します。

スタイルダイアログの作成

次に、スタイルで次のXAMLブロックを見つけて、に設定Margin0ます。

<Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="3">
    <ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>

x:Keyスタイル宣言から削除して、すべてのボタンに新しいスタイルを割り当てます。

<Style TargetType="Button">
    <!-- style definition -->
</Style>

または、選択したボタンにスタイルを設定します。

<Button Style="{StaticResource MyButtonStyle}"/>

いずれにせよ、ボタンの間に隙間がなく、ボタンが隣り合っています。

于 2013-02-07T05:51:39.810 に答える
0

そのため、Windows Storeアプリの動作について厳密に説明しているわけではありませんが、一般的なWPF/Silverlightからそれほど離れているとは思いません。並べて配置すると、不要なパディングが付いたラベルコントロールから同じフラストレーションが発生します。あなたができることは、負のマージンを使用することであり、それはそれを修正します。あなたがそれをしなければならないのは完全にきれいではないと思いますが、それはうまくいきます。

于 2013-02-07T03:30:36.233 に答える