我正在尝试学习如何在运行时添加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方法但不使用属性?
由于
答案 0 :(得分: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