2017-04-04 8 views
1

私はWindowsの普遍的なアプリケーション上で動的フォームを生成しようとしていて、マージンに問題があります。XAMLマージンエラー

私は、余白0の左側にあるようにラジオボタンとテキストボックスを保つのが好きです。 問題はどういうわけか、テキストボックスが左にとどまることはできません。テキストボックスが画面の右側に移動していました。

これはアプリを実行した後の結果です。

のWindows 10 The output result for Windows Universal app on Windows 10

プロジェクトのための私のスクリプトファイル名MainPage.xaml.cs AppTestTrash

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.Foundation; 
using Windows.Foundation.Collections; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Controls.Primitives; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 
using Windows.UI.Xaml.Navigation; 
namespace AppTestTrash 
{ 
    /// <summary> 
    /// An empty page that can be used on its own or navigated to within a Frame. 
    /// </summary> 
    public sealed partial class MainPage : Page 
    { 
     public MainPage() 
     { 
      this.InitializeComponent(); 
     } 

     private void Page_Loaded(object sender, RoutedEventArgs e) 
     { 
      //Add dynamic RadioButton 
      var dynamicRadiobtn = new RadioButton(); 
      dynamicRadiobtn.Name = "testme"; 
      dynamicRadiobtn.Height = 30; 
      dynamicRadiobtn.Width = 50; 
      dynamicRadiobtn.Margin = new Thickness(0, 100, 0, 0); 
      dynamicForm.Children.Add(dynamicRadiobtn); 

      //Add dynamic texbox 
      var dynamicTextbox = new TextBox(); 
      dynamicTextbox.Name = "testme2"; 
      dynamicTextbox.Height = 30; 
      dynamicTextbox.Width = 50; 
      dynamicTextbox.Margin = new Thickness(0, 120, 0, 0); 
      dynamicForm.Children.Add(dynamicTextbox); 
     } 
    } 
} 

XAMLファイルMainPage.xamlを上のWindowsユニバーサルアプリのための出力結果

<Page 
    x:Class="AppTestTrash.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:AppTestTrash" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" Loaded="Page_Loaded"> 

    <Grid Name="mainGrid" BorderBrush="AliceBlue" Width="500" Height="500" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" BorderThickness="2"> 
     <StackPanel Name="dynamicForm" BorderThickness="1"> 
     </StackPanel> 
    </Grid> 
</Page> 

答えて

2

この問題を解決するには、dynamicTextboxHorizontalAlignmentプロパティをに設定できますは次のようになります。テキストボックスにも左マージンは詳細については0です。あなたのグリッドの中心になりますので

//Add dynamic texbox 
var dynamicTextbox = new TextBox(); 
dynamicTextbox.Name = "testme2"; 
dynamicTextbox.Height = 30; 
dynamicTextbox.Width = 50; 
dynamicTextbox.HorizontalAlignment = HorizontalAlignment.Left; 
dynamicTextbox.Margin = new Thickness(0, 120, 0, 0); 
dynamicForm.Children.Add(dynamicTextbox); 

HorizontalAlignmentのデフォルト値は、ストレッチで、備考HorizontalAlignmentを参照してください。