1

ラベル、テキストボックス、ボタンを動的に作成しています。右側のテキストボックスと同じ行にボタンを表示する必要があります。

これは私が使用しているコードです:

    Label lbl = new Label()
    {
        Content = "Some Label",
        HorizontalAlignment = HorizontalAlignment.Left,
        VerticalAlignment = VerticalAlignment.Top,
        HorizontalContentAlignment = HorizontalAlignment.Center,
        VerticalContentAlignment = VerticalAlignment.Center,
        Height = 28,
    };

    TextBox tb = new TextBox()
    {
        Text = "Some Text",
        IsReadOnly = true,
    };

    Button btn = new Button()
    {
        Content = "Click Me",
        HorizontalAlignment = HorizontalAlignment.Left
        Margin = new Thickness(tb.ActualWidth),
    };

テキストボックスの右側にボタンマージンを割り当てていますが、それでもテキストボックスの下の次の行に表示されます。

私はここで何が間違っているのですか?

4

4 に答える 4

4

StackPanelあなたはあなたの問題を解決するために使うことができます:

StackPanel spMain = new StackPanel() { Orientation = Orientation.Vertical };

Label lbl = new Label()
  {
      Content = "Some Label",
      HorizontalAlignment = HorizontalAlignment.Left,
      VerticalAlignment = VerticalAlignment.Top,
      HorizontalContentAlignment = HorizontalAlignment.Center,
      VerticalContentAlignment = VerticalAlignment.Center,
      Height = 28,
  };

StackPanel spInner = new StackPanel() { Orientation = Orientation.Horizontal };

TextBox tb = new TextBox()
{
    Text = "Some Text",
    IsReadOnly = true,
};

Button btn = new Button()
{
    Content = "Click Me",
    HorizontalAlignment = HorizontalAlignment.Left,
    Margin = new Thickness(tb.ActualWidth),
};

spInner.Children.Add(tb);
spInner.Children.Add(btn);

spMain.Children.Add(lbl);
spMain.Children.Add(spInner);

詳細については、次のリンクを確認してください。

http://msdn.microsoft.com/en-us/library/system.windows.controls.stackpanel.orientation.aspx

于 2013-01-30T15:42:40.370 に答える
0

Button のインスタンスから Content メソッドを使うと良いと思います

 private byte _count;
    internal void FillbtnSubCat(Grid grid)
    {
        var myDefinition = new ColumnDefinition();
        var myButton = new Button();
        var myBlock = new TextBlock()
        {
            TextAlignment = TextAlignment.Center,
            TextWrapping = TextWrapping.Wrap,
            Text = "Some Text",
            Margin = new Thickness(5, 10, 5, 10)
        };

        Grid.SetColumn(myButton, _count);
        myButton.Margin = new Thickness(5, 10, 5, 25);
        myButton.MinWidth = 30;

        myButton.Content = myBlock;

        myDefinition.Width = new GridLength(68);
        grid.ColumnDefinitions.Add(myDefinition);
        grid.Children.Add(myButton);
        _count++;
    }

XAML

 <Grid Name="Grid1" Height="100" Width="auto">

            </Grid>
于 2016-04-24T21:50:12.500 に答える
0

コントロールを配置しているページ コンテンツが何であるかによって異なります。それはグリッドか何か他のものですか?

必要に応じてアイテムをファッションに適切に含めるスタックパネルも作成してみませんか.

于 2013-01-30T15:41:51.727 に答える
0

作成したすべてのコントロールを、Orientation を Horizo​​ntal に設定して StackPanel に配置してみませんか。このようにして、それらは常に隣り合わせに配置されます。

var stPanel = new StackPanel { Orientation = Orientation.Horizontal };
var button = new Button() { ... }
stPanel.Children.Add(button);
//And so on

編集: kmatyaszekは私より先にいました... :)

于 2013-01-30T15:45:18.540 に答える