2016-09-05 20 views
0

WPFでコントロールのマージンを設定するにはどうすればよいですか?私は以前はWinFormsを使用していましたが、WPFへの変換を目指しています。C#WPFアプリケーションのマージンを設定する

私は新しいWPFアプリケーションを作成し、MainWindowからグリッドを削除し、Canvasを追加し、Canvasに2つのラベルを追加しました。私はラベルの周りに余白を設定したいと思いますが、それを設定したら20にして、それが動作しているかどうかを確認するためにそれらを移動しようとすると、LabelのMarginプロパティは値を0にリセットします。私はWinFormsのようなWPF?

ありがとうございます!

EDIT:

がうまくいけば、これは関心のだコードです。

したがって、プロパティタブでラベルの余白の値を変更します。次のようになります。

<Window x:Class="WpfApplication1.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:WpfApplication1" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"> 
    <Label x:Name="label" Content="Label" Canvas.Left="51" Canvas.Top="47" Margin="20"/> 
    <Label x:Name="label1" Content="Label" Canvas.Left="104" Canvas.Top="125" Margin="20"/> 
</Canvas></Window> 

はその後、私はラベルをドラッグすると、それは自動的にこれに変更します。

<Window x:Class="WpfApplication1.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:WpfApplication1" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525"> 
<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"> 
    <Label x:Name="label" Content="Label" Canvas.Left="51" Canvas.Top="47" Margin="20"/> 
    <Label x:Name="label1" Content="Label" Canvas.Left="129" Canvas.Top="101"/> 
</Canvas> </Window> 

私は他のラベルをドラッグすると、それはあまりにも「リセット」をゼロに。

+1

コードを共有してください。 –

+0

@AliTor確かに、具体的に何を見たいですか?生成されたXAML? – jon

+0

WPF Designerでラベルを移動していますか? – Cyferka

答えて

0

ラベルがキャンバス内にあるときに問題が発生しているようです。グリッドでサンプルを追加し、期待どおりに動作し、ラベルが移動されたときにMarginプロパティが再計算されます。

<Grid> 
    <Label x:Name="label1" Content="Label" Margin="20" VerticalAlignment="Top" Width="200"/> 
</Grid> 

また、Paddingプロパティを使用することもできます。どんなにあなたがラベルをどのように移動するか、それが20

<Canvas HorizontalAlignment="Left" Height="173" Margin="87,62,0,0" VerticalAlignment="Top" Width="205" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"> 
    <Label x:Name="label" Content="Label" Canvas.Top="40" Canvas.Left="21" Padding="20"/> 
    <Label x:Name="label1" Content="Label" Canvas.Left="32" Canvas.Top="125"/> 
</Canvas> 

に滞在しないだろうしかし、私は強くのみ、ソースコードの編集をお勧めしますし、WPFデザイナで要素を触れないでください。あなたはあなたのコードをはるかにコントロールできます。

関連する問題