如何使用WrapPanel在WPF中的文本框旁边移动按钮

时间:2016-11-14 05:33:00

标签: c# wpf

我是WPF的新手。我有一个Button.I想要创建动态文本框。当我关注动态文本框时按钮移动到文本框旁边。我不知道该怎么做。请帮帮我

 <Grid Name="mymy" HorizontalAlignment="Left" Height="243" Grid.Column="0" Grid.Row="0" VerticalAlignment="Top" Width="263" Margin="462,105,0,0" Grid.RowSpan="2" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <WrapPanel Grid.Column="1" x:Name="abc" HorizontalAlignment="Left" Height="232" Margin="0,0,-250,-218" VerticalAlignment="Top" Width="262" Grid.Row="1"/>
 </Grid>
    <!--<DockPanel Name="mymy1" HorizontalAlignment="Left" Height="191" LastChildFill="True" Margin="424,94,0,0" VerticalAlignment="Top" Width="282" Grid.RowSpan="2"/>-->

.cs代码

 private void button_Click(object sender, RoutedEventArgs e)
    {
        txtSource = new TextBox();
        txtSource.MinHeight = 15;
        txtSource.Width = 100;
        txtSource.Height = 25;
        txtSource.Name = "txtSource";

        //Binding txtBinding = new Binding("PurchaseOrder.PickupSrcCodeName"); /*txtBinding.Mode = BindingMode.OneWay;*/

        //txtSource.SetBinding(TextBox.TextProperty, txtBinding);

        ColumnDefinition colDef1;
        colDef1 = new ColumnDefinition();
        mymy.ColumnDefinitions.Add(colDef1);

        RowDefinition rowDef1;
        rowDef1 = new RowDefinition();
        mymy.RowDefinitions.Add(rowDef1);
        ++count;

        abc.Children.Add(txtSource);


        Grid.SetColumn(txtSource, count);
        Grid.SetRow(txtSource, 0);
        txtSource.GotFocus += t_GotFocus;
        txtSource.TextChanged += this.t_TextChanged;
      }

    private void t_TextChanged(object sender, RoutedEventArgs e)
    {
        button.Visibility = Visibility.Visible;

    }

enter image description here

1 个答案:

答案 0 :(得分:0)

欢迎来到SO。 考虑以下两点:

  1. 在运行时更改网格布局是非常糟糕的习惯(布局我指的是行和列)
  2. 就像在网格中设置文本框位置一样,您也可以将按钮放在其中。您只需要在head之前创建它所需的行和列。
  3. 我的观点是你应该有一个堆栈布局动态添加控件。然后,该控件可以是自定义控件,包括带有文本框的网格和按钮的位置(或者可以隐藏或带有属性的可见按钮)

    如果您喜欢我的想法,请参阅this以了解如何创建自定义控件。