Существует несколько подходов к этой проблеме.
Первый - это гибридный подход, при котором поток данных направляется в текстовые поля через привязки, а нажатие кнопки удаляет данные.
Для начала вам нужно убедиться, что ваши классы данных реализуют INotifyPropertyChanged
:
public class Foo : INotifyPropertyChanged
{
private string bar;
private string baz;
public string Bar
{
get { return this.bar; }
set
{
this.bar = value;
// this is where the magic of bindings happens
this.OnPropertyChanged("Bar");
}
}
// rest of the class here...
}
Ссылка в вашем XAML через привязки:
<Grid>
<Grid.RowDefinitions>
<!-- ... -->
</Grid.RowDefinitions>
<TextBox Grid.Row="0"
Text="{Binding Bar}" />
<TextBox Grid.Row="1"
Text="{Binding Baz}" />
<!-- A more complete example would use Button.Command -->
<Button Grid.Row="2"
Content="CLEAR"
Click="ClearButton_Click" />
Наконец,эти привязки подключаются с использованием DataContext
и маршрутизируемого обработчика событий в вашем коде Window
:
public Window1()
{
this.InitializeComponent();
// sets up the DataContext used by the bindings
this.Clear();
}
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
this.Clear();
}
private void Clear()
{
this.DataContext = new Foo();
}
Этот подход поможет вам лучше ориентироваться в более сложных интерфейсах.
Последнее усилие в канаве будет:
/// <summary>This is a bad choice.</summary>
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
// assumes the Grid is named MyGrid
foreach (var textBox in this.MyGrid.Children.OfType<TextBox>())
{
textBox.Text = null;
}
}