저는 WPF에 상당히 익숙하며 원하는대로 작동하도록 데이터 바인딩을 얻는 데 몇 가지 문제가 있습니다. TextBox를 포함하는 사용자 정의 컨트롤을 작성했습니다.이 TextBox는 다른 사용자에게 다시 바인딩하려는 UserControl의 속성에 바인딩하려고합니다.WPF에서 사용자 정의 컨트롤을 사용하여 데이터 바인딩을 수행하는 방법은 무엇입니까?
무엇이 누락 되었습니까?
XAML
<!-- User Control -->
<TextBox Text="{Binding Path=TheText}" />
<!-- Window -->
<WpfApplication1:SomeControl TheText="{Binding Path=MyStringProp}" />
C#을
// User Control ----
public partial class SomeControl : UserControl
{
public DependencyProperty TheTextProperty = DependencyProperty
.Register("TheText", typeof (string), typeof (SomeControl));
public string TheText
{
get
{
return (string)GetValue(TheTextProperty);
}
set
{
SetValue(TheTextProperty, value);
}
}
public SomeControl()
{
InitializeComponent();
DataContext = this;
}
}
// Window ----
public partial class Window1 : Window
{
private readonly MyClass _myClass;
public Window1()
{
InitializeComponent();
_myClass = new MyClass();
_myClass.MyStringProp = "Hallo Welt";
DataContext = _myClass;
}
}
public class MyClass// : DependencyObject
{
// public static DependencyProperty MyStringPropProperty = DependencyProperty
// .Register("MyStringProp", typeof (string), typeof (MyClass));
public string MyStringProp { get; set; }
// {
// get { return (string)GetValue(MyStringPropProperty); }
// set { SetValue(MyStringPropProperty, value); }
// }
}
안부
올리버 Hanappi
PS : 나는 내 사용자 컨트롤의에서 INotifyPropertyChanged 인터페이스를 구현하려고했지만 도움이되지 않았다.
UserControl의 DataContext를 생성자에 'this'로 설정하고 있으므로 Binding은 어떤 속성을 의미하는지 알고 있습니다. 텍스트 상자의 값을 또한 UserControl의 속성에 올바르게 바인딩되어 있지만 databinding 내 Windows 손실 된 것으로 보인다. –
아 맞습니다 - 예, 사람들이 그것을 시도하는 것을 보았습니다. 윈도우 레벨에서 바인딩을 혼란스럽게 만드는 것 같습니다. Element Binding을 사용하면이를 방지 할 필요가 없습니다. –
좋아, 이제 해결했다. 문제는 제 윈도우에서 바인딩 모드를 TwoWay로 설정해야한다는 것입니다. 도와 줘서 고마워! –