저는 간단한 작업을 조사하기 위해 Google에서 몇 시간을 보내고 있습니다. 내 변수 TestString 을 TestClass.MeinString에 바인딩하려고합니다 .
" tb_tbBinding " 버튼을 클릭하면 TestString과 TestClass.MyString은 동일한 값을 유지해야합니다.
관련 코드 :
public partial class Window_Test : Window, INotifyPropertyChanged
{
public Window_Test()
{
InitializeComponent();
DataContext = this;
// Trying to bind TestClass.MeinString to TestString
BindingOperations.SetBinding(TestClass, BindingTestClass.MeinStringProperty, new Binding("TestClass.MeinString") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });
}
string _TestString = "Hello World!";
public string TestString
{
get
{
return _TestString;
}
set
{
_TestString = value;
OnPropertyChanged("TestString");
}
}
BindingTestClass _TestClass = new BindingTestClass("Hallo Lukas!");
public BindingTestClass TestClass
{
get
{
return _TestClass;
}
set
{
_TestClass = value;
OnPropertyChanged("TestClass");
}
}
private void btn_testclasschanger_click(object sender, RoutedEventArgs e)
{
TestClass.MeinString = "Changed String!";
}
private void btn_teststringchanger_click(object sender, RoutedEventArgs e)
{
TestString = "Changed Class!";
}
}
내 맞춤 수업 :
public class BindingTestClass : DependencyObject, INotifyPropertyChanged
{
public BindingTestClass(string myString)
{
MeinString = myString;
}
public string MeinString
{
get
{
return (string)GetValue(MeinStringProperty);
}
set
{
SetValue(MeinStringProperty, value);
OnPropertyChanged("MeinString");
}
}
public static readonly DependencyProperty MeinStringProperty = DependencyProperty.Register("MeinString", typeof(string), typeof(BindingTestClass), new FrameworkPropertyMetadata()
{
BindsTwoWayByDefault = true,
DefaultUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
});
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
감사합니다!
Source
바인딩 속성을 설정하십시오.
BindingOperations.SetBinding(TestClass, BindingTestClass.MeinStringProperty,
new Binding("TestString") { Source=this, UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });
기본적으로 바인딩 .DataContext
은 바인딩의 소스로를 사용 하지만 귀하의 경우 TestClass
에는 .DataContext
아무것도 설정 하지 않습니다 . 사실 .NET의 유효한 속성인지 확실하지 않습니다 DependencyObject
.
일반적으로는 .DataContext
WPF의 시각적 트리에있는 개체의 부모로부터 상속되지만 시각적 트리의 TestClass
일부가 아니므로 상속 할 항목이 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다