为什么't属性语法在动态添加TextBox时不起作用?

本文关键字:TextBox 添加 不起作用 动态 属性语法 为什么 | 更新日期: 2023-09-27 18:12:18

我正在学习如何在运行时添加WPF控件。下面是一个带问题的简单例子:

XAML

<Window x:Class="BindAndDynamicPractice.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel Name="splMain">
        <Button Name="btnAddMore" Click="btnAddMore_Click">Add Another</Button>
    </StackPanel>
</Window>
c#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Shapes;

namespace BindAndDynamicPractice
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        public void btnAddMore_Click(object sender, RoutedEventArgs e)
        {
            AnotherTextBox mybindingtest = new AnotherTextBox();
            splMain.Children.Add(mybindingtest.PropTextBox);
        }
    }
    public class AnotherTextBox
    {
        System.Windows.Controls.TextBox _newTextBox = new TextBox();
        public TextBox PropTextBox { get; set; }
    }
}

这编译,但我得到一个运行时错误,我认为有一些东西与尝试使用属性。我相信这是因为当我将AnotherTextBox类更改为以下内容时:

public class AnotherTextBox
   {
       System.Windows.Controls.TextBox _newTextBox = new TextBox();
       public TextBox PropTextBox()
       {
           return _newTextBox;
       }
    }

然后更新btnAddMore_Click:

public void btnAddMore_Click(object sender, RoutedEventArgs e)
        {
            AnotherTextBox mybindingtest = new AnotherTextBox();
            splMain.Children.Add(mybindingtest.PropTextBox());
        }

现在可以正常工作了

那么为什么使用完整的get方法工作,但使用属性不?

谢谢

为什么't属性语法在动态添加TextBox时不起作用?

你没有属性,你有一个方法。因此,必须使用方法语法调用它。你碰巧是从爪哇来的吗?

方法:

public TextBox PropTextBox()
{
   return _newTextBox;
}

属性:

public TextBox PropTextBox {
    get { return _newTextBox(); }
}

这里有一个关于属性的教程:http://msdn.microsoft.com/en-us/library/aa288470(v=vs.71).aspx