在WPF C#中按下按钮时如何向窗口添加新标签

时间:2019-02-23 23:50:13

标签: c# wpf

我想创建一个程序,当您单击按钮时,该程序将窗口文本框中的内容显示为新标签

到目前为止,这是代码的样子

XAML

<Window x:Class="firstwpfapp.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:firstwpfapp"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid Margin="-120,-142,0,0" >
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0*"/>
        <ColumnDefinition Width="5*"/>
        <ColumnDefinition Width="451*"/>
    </Grid.ColumnDefinitions>
    <StackPanel x:Name="Wrapper">

    </StackPanel>

    <TextBox x:Name="input" Grid.Column="2" HorizontalAlignment="Left" Height="31" Margin="106,198,0,0" TextWrapping="Wrap" Text="Enter here" VerticalAlignment="Top" Width="166"/>
    <Button  Content="Button" Grid.Column="2" HorizontalAlignment="Left" Margin="106,234,0,0" VerticalAlignment="Top" Width="166" Height="26" Click="addTask"/>

</Grid>

C#

using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace firstwpfapp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void addTask(object sender, RoutedEventArgs e)
        {





            String val = input.GetLineText().ToString();
            Label todo = new Label();
            todo.Content = val;
            Wrapper.Children.Add(todo);



        }
    }
}

到目前为止,当我按下按钮时,没有任何内容添加到窗口中。

1 个答案:

答案 0 :(得分:0)

可以编译吗?根据此处的文档(https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.textbox.getlinetext?view=netframework-4.7.2#System_Windows_Controls_TextBox_GetLineText_System_Int32_),方法GetLineText()需要传入一个整数参数。如果要获取整个文本值,可以使用.Text属性。

此外,您还没有为StackPanel定义大小/位置,因此它可能不可见。

另外GetLineText(int)已经返回了一个字符串,因此无需调用.ToString()