UserControl안에 UserControl 바인딩 문제

안녕하세요.

wpf 시작한지 얼마안된 초보입니다.

아직 기초가 부족해서 바인딩 부분을 잘 모르겠어서 질문드립니다.

ATextBox(UserControl)을 BControl(UserControl)안에 넣고,

이 BControl 을 MainWindow.xaml의 ListBox안에 넣었습니다.

ObservableCollection으로 연결시켰는데,

ATextBox의 TextBox에 문자를 입력하면 Observablecollection에 반영이 안되는 문제입니다.

BControl(UserControl)에 있는 ATextBox 대신 기본 TextBox를 넣으면 정상적으로 반영이 되는데 ATextBox를 쓰면 반영이 안되는데

뭐가 빠졌는지, 잘못됐는지 몇일동안 고민했지만 모르겠습니다.

ATextBox에 입력한 문자열이 ObservableCollection에 반영이 되야 그걸 여러목적으로 사용하는데 반영이 안되니 문제네요.

혹시 알려주신다면 너무나 감사하겠습니다.

참고로 소스는 테스트용이라 viewmodel없이 만들었는데 없어도 공부가 될것같고 있어도 공부가 될것같습니다.

소스코드는 .NET 6.0입니다.

https://github.com/aoiumi94/Test5

2 Likes

바인딩 모드를 양 방향으로 설정해 보세요.

<local:ATextBox Text="{Binding Title, Mode=TwoWay}" Width="200"/>

또는 DependencyProperty 의 바인딩 모드를 기본값 양방향으로 사용 하고 싶으시면 BindsTwoWayByDefault 속성으로 지정 할 수 있습니다.

public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text",
                                typeof(string),
                                typeof(ATextBox),
                                new FrameworkPropertyMetadata(string.Empty) { BindsTwoWayByDefault  = true });
2 Likes

오 잘되네요.감사합니다. mode가 답이었다니 다시 공부좀 해야겠네요. BindsTwoWayByDefault는 첨보는건데 Default를 양방향으로 설정할수 있군요. 이부분도 좀더 공부하겠습니다. 너무 감사합니다.

1 Like