2014-07-10 19 views
0

我試圖學習如何在運行時添加WPF控件。下面是一個問題,一個簡單的例子如下:爲什麼動態添加TextBox時屬性語法不起作用

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()); 
     } 

現在這個工作,因爲它應該。

那麼,爲什麼使用完全獲取方法的工作,但使用屬性不?

謝謝

回答

0

你沒有財產,你有一個方法。因此你必須使用方法語法來調用它。你有機會來自Java嗎?

的方法:

public TextBox PropTextBox() 
{ 
    return _newTextBox; 
} 

的屬性:

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

有性質上這裏的教程:http://msdn.microsoft.com/en-us/library/aa288470(v=vs.71).aspx

+0

謝謝,不知道的Java。我現在看到我嘗試使用自動屬性而不綁定到底層專用字段時出錯。 – user1181337

相關問題