加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 绑定源是带有path属性的字符串

发布时间:2020-12-15 04:28:23 所属栏目:百科 来源:网络整理
导读:我不确定这是否可能,但我想我会问.首先,为了我的目的,我要求它在C#部分而不是XAML部分工作.这是我拥有的,它的工作原理: public partial class MyClass1 : Window{ public MyClass2 MyClass2Object { get; set; } public MyClass1() { InitializeComponent()
我不确定这是否可能,但我想我会问.首先,为了我的目的,我要求它在C#部分而不是XAML部分工作.这是我拥有的,它的工作原理:
public partial class MyClass1 : Window
{
     public MyClass2 MyClass2Object { get; set; }

     public MyClass1()
     {
          InitializeComponent();
          MyClass2Object = new MyClass2();
          Binding binding = new Binding();
          binding.Source = MyClass2Object;
          binding.Path = new PropertyPath("StringVar");
          TextBoxFromXaml.SetBinding(TextBox.TextProperty,binding);
     }
}
public class MyClass2
{
     public string StringVar { get; set; }

     public MyClass2()
     {
          StringVar = "My String Here";
     }
}

这将完全按照我的意愿绑定到我的StringVar属性.但是,我的问题是如果在设置绑定源时我有文字字符串“MyClass2Object.StringVar”.我意识到我可以使用split函数将“MyClass2Object”和“StringVar”从较长的字符串中分离出来.然后我可以用拆分中的第二个结果替换新的PropertyPath行.但是,如何根据拆分的第一个结果替换binding.Source行.如果这是可能的,我将能够传递像“MyClass2Object.StringVar”这样的字符串,并让TextBox的Text属性绑定到该属性,或者如果我传递一个像“AnotherClassObject.StringProperty”这样的字符串,并将TextBox的Text属性绑定到在名为AnotherClassObject的变量中实例化的对象的StringProperty属性.我希望我有意义.

解决方法

听起来你希望PropertyPath是“Property.Property”,它可以工作,但是为了使绑定工作,它需要第一个Property的源对象.我所知道的两个选项是 DataContext或 Source.

使用示例代码,另一种选择是:

public partial class Window1 : Window
{
    public MyClass2 MyClass2Object { get; set; }
    public Window1()
    {
        // use data context instead of source
        DataContext = this;

        InitializeComponent();

        MyClass2Object = new MyClass2();
        Binding binding = new Binding();
        binding.Path = new PropertyPath("MyClass2Object.StringVar");
        TextBoxFromXaml.SetBinding(TextBox.TextProperty,binding);
    }
}

public class MyClass2
{
    public string StringVar { get; set; }
    public MyClass2()
    {
        StringVar = "My String Here";
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读