Vac*_*ano 3 c# data-binding wpf binding
可以在代码中创建的对象(即C#)用于XAML中的绑定吗?
例如:
public class MyForm
{
private MyComplexObject complexObject;
public MyForm()
{
InitializeComponent();
}
public OnButtonClick(object sender, RoutedEventArgs e)
{
complexObject = new MyComplexObject();
}
}
Run Code Online (Sandbox Code Playgroud)
complexObject
在单击按钮之前不会创建.但是,一旦点击该按钮,我想有一个文本框,必须complexObject.ID
开始显示Id.
如果可能的话,我想在XAML中这样做.
可以这样做吗?如果是这样,怎么样?
是的,这可以完成,绑定到您使用所需值更新的属性.我建议你研究一下MVVM模式(Model-View-ViewModel),这对于使用WPF很好地构建它非常有用.观看此视频,了解 MVVM视频
使用MMVM,您将创建一个类,它将是ViewModel类.通常将此视图设置为View的DataContext.这样做之后,您可以添加对类的其他属性的动态引用,例如将文本字段绑定到包含Id和ComplexObject的某个属性.如果你的ViewModel类有一个属性ComplexObject,它又有一个属性ID,你只需要像这样绑定到对象:
<TextBlock Text="{Binding ComplexObject.ID}" />
Run Code Online (Sandbox Code Playgroud)
有了这个,你可以通过鼠标点击触发你的ComplexObject的创建,理想情况下你应该设置为命令绑定.另请注意,ViewModel类(或者持有ComplexObject的人需要在设置对象时通知View.这可以通过使ComplexObject成为DependencyProperty或通过使持有该属性的类实现INotifyPropertyChanged接口来完成 - 给出它是PropertyChanged函数来触发改变的事件.我更喜欢后者.