gpt4 book ai didi

c# - 绑定(bind)源是带有属性路径的字符串

转载 作者:太空狗 更新时间:2023-10-29 20:04:07 25 4
gpt4 key购买 nike

我不确定这是否可能,但我想我会问。首先,出于我的目的,我要求它在 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";
}
}

这将完全按照我的意愿绑定(bind)到我的 StringVar 属性。但是,我的问题是在设置绑定(bind)源时如果我有文字字符串“MyClass2Object.StringVar”怎么办。我意识到我可以使用拆分函数将“MyClass2Object”和“StringVar”与较长的字符串分开。然后我可以用拆分的第二个结果替换新的 PropertyPath 行。但是,我将如何根据拆分的第一个结果替换 binding.Source 行。如果可能的话,我将能够传递类似“MyClass2Object.StringVar”的字符串并将 TextBox 的 Text 属性绑定(bind)到该属性,或者如果我传递类似“AnotherClassObject.StringProperty”的字符串并将 TextBox 的 Text 属性绑定(bind)到在名称为 AnotherClassObject 的变量中实例化的对象的 StringProperty 属性。我希望我说的有道理。

最佳答案

听起来您希望 PropertyPath 为“Property.Property”,这将起作用,但要使绑定(bind)起作用,它需要第一个属性的源对象。我知道的两个选项是 DataContextSource .

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

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";
}
}

关于c# - 绑定(bind)源是带有属性路径的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com