【问题标题】:Silverlight: Programmatically binding control propertiesSilverlight:以编程方式绑定控件属性
【发布时间】:2023-04-01 20:15:02
【问题描述】:

大局: 我有一个自定义子控件,它根据我设置的属性生成各种文本框、日期选择器、组合等。此控件嵌入在我的 SL 应用程序中的各个位置。

我通常使用 MVVM 模式,并且我想将这些动态控件的值绑定回我的母版页视图模型中。

我一直都知道表单上会有 8 个控件,因此我可以为控件绑定依赖属性。然后引用此控件的控件可以使用与已输入数据的绑定,同时保持 MVVM 模式。

问题:如何以编程方式将动态控件的值绑定到依赖属性?

谢谢, 标记

【问题讨论】:

    标签: silverlight mvvm binding


    【解决方案1】:

    假设您已经动态创建了一个简单的 TextBox,并且您想在 Text 属性上添加一个绑定:-

     Binding binding = new Binding("SomeProperty");
     binding.Mode = BindingMode.TwoWay;
    
     txtBox.SetBinding(TextBox.TextProperty, binding);
    

    其中 txtBox 是您要观察/变异的动态创建的 TextBox。

    【讨论】:

    【解决方案2】:

    马克,我不完全确定我是否理解了您问题的含义,但是您是否考虑过 Binding 类?例如:

    Customer customer = new Customer();
    TextBox box = new TextBox();
    Binding binding = new Binding("FullName");
    binding.Source = customer;
    box.SetBinding(TextBox.TextProperty, binding);
    

    这会将 TextBox 控件的“Text”依赖属性绑定到客户对象的“FullName”属性。

    【讨论】:

    • 正如 AnthonyWJones 指出的那样,如果您希望将 TextBox 中的更改传播回客户对象,则需要设置 BindingMode.TwoWay。
    • 您可能不想在此级别分配源吗?
    • 是的,可能不会——因为它会覆盖 DataContext。
    • 感谢您的回答。我为你 +1 了,但将答案授予 Anthony 以获取有关 TwoWay 模式的信息,这更符合我的需要。标记
    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 2014-03-12
    • 2012-07-29
    • 2012-09-18
    • 1970-01-01
    • 2010-12-14
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多