簡體   English   中英

為什么動態添加TextBox時屬性語法不起作用

[英]Why doesn't property syntax work when dynamically adding TextBox

我正在嘗試學習如何在運行時添加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());
        }

現在,它可以正常工作了。

那么,為什么使用完全獲取方法卻不能使用屬性呢?

謝謝

您沒有屬性,但是有方法。 因此,您必須使用方法語法來調用它。 您是否偶然來自Java?

一個方法:

public TextBox PropTextBox()
{
   return _newTextBox;
}

屬性:

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

這里有關於屬性的教程: http : //msdn.microsoft.com/zh-cn/library/aa288470(v=vs.71).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM