这是来自WPF新手的一个非常基本的问题。 我有一个带有一些控件的表单,例如TextBoxes,DatePickers。 在典型的Windows窗体中,我会在onFormLoad事件中为这些设置默认值,如
txtName.Text = "N/A";
dpStartDate.Value = DateTime.Now(5); //set 5 days from now
dpEndDate.Value = DateTime.Now(10); //set 10 days from now
如何在WPF格式中执行此操作?这是一个非常初学的问题,在哪里做正确的WPF方式?
更新: 到目前为止,我发现我可以在Window_Loaded事件中执行此操作,如:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// Initialize Employee Data
txtName.Text = "N/A";
dpEmplDate.Text = DateTime.Now.AddDays(-100).Date.ToString();
dpTermDate.Text = DateTime.Now.AddDays(1).Date.ToString();
txtAddress.Text = "N/A";
dpDateOfBirth.Text = "";
txtDepartment.Text="N/A";
...
...
}
所以,我正在设置这样的默认员工价值。 我的问题是,这是正确的WPF初始化数据的方式吗? 谢谢,
答案 0 :(得分:1)
在您不使用MVVM pattern.之前,没有首选项将值设置为Controls
您可以在XAML中执行此操作:
<TextBox Name=txtName Text="N/A"/>
或代码隐藏:
txtName.Text = "N/A";
但WPF是非常酷的技术,因为它可以提供数据和视图之间关注点的清晰分离。它可以使用MVVM模式实现。
可以使用Binding
在数据和视图之间以及从视图到数据之间发送数据。因此在MVVM模式中,数据是从view model
设置的。语法示例:
查看:强>
<TextBox Text="{Binding FooProperty}"/>>
<强>视图模型:强>
public class FooViewModel
{
private string fooProperty="Hello World";
public string FooProperty
{
get { return fooProperty; }
set { fooProperty = value; }
}
}
DataContext
属性用于连接View
和ViewModel
。如果不设置ViewModel
属性,则不会显示DataContext
中的数据。