WPF - 在XAML中绑定到后面的代码中创建的对象

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中这样做.

可以这样做吗?如果是这样,怎么样?

sti*_*k81 9

是的,这可以完成,绑定到您使用所需值更新的属性.我建议你研究一下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函数来触发改变的事件.我更喜欢后者.