На самом деле вы хотели бы поместить свойство в модель представления и использовать привязку XAML, но это уже другая история.
Когда вы описываете свой пример, вам сначала нужно реализовать свойство "FirstName"как свойство зависимости, а не просто получить / установить. Вот отличный фрагмент кода от Шона Вильдермута для экономии большого количества операций ввода (во фрагменте нужно исправить только одну опечатку - "($ type $) args. NewValue ; "... NewValue имеет неправильный регистр во фрагменте).
Вы можете связать в XAML с простым свойством get / set, но это односторонняя / одноразовая привязка и не будет обновлятьсяс изменениями.
В коде привязка требует установки двух вещей.
- Установите DataContext элемента управления (или страницы) и
- Установите привязку данных к элементу управления.
В качестве примера вы упомянули васможет использовать код, подобный следующему (предполагается, что элемент управления TextBox с именем myTextBox в Xaml):
using System.Windows;
using System.Windows.Controls;
namespace BindingCodeTest
{
public partial class BindingCode : UserControl
{
public string FirstName
{
get { return (string)GetValue(FirstNameProperty); }
set { SetValue(FirstNameProperty, value); }
}
// Using a DependencyProperty as the backing store for FirstName.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName",
typeof(string),
typeof(BindingCode),
new PropertyMetadata(string.Empty,
new PropertyChangedCallback(OnFirstNameChanged)));
static void OnFirstNameChanged(object sender, DependencyPropertyChangedEventArgs args)
{
// Get reference to self
BindingCode source = (BindingCode)sender;
// Add Handling Code
string newValue = (string)args.NewValue;
}
public BindingCode()
{
InitializeComponent();
myTextBox.DataContext = this;
myTextBox.SetBinding(TextBox.TextProperty, new System.Windows.Data.Binding("FirstName"));
FirstName = "First name"; // Sample change
}
}
}