지금 사용자 지정 컨트롤을 구현하려고합니다. (당연히 내가 첨부 한 데모 솔루션보다 더 복잡합니다.) 값을 전달할 때 실패했습니다. 다운 바인딩. 모든하위 클래스가있는 사용자 지정 컨트롤에 대한 WPF 컴플렉스 바인딩을 설정으로 사용합니다.
먼저, 제어의 구조 :
- 제어
- 설정 (이것은 제어 종속성 속성이며 (이것은 기본적으로 공통의 기능을 등록을 통과하여 처리하는 래퍼) 텍스트 (이것은 설정 클래스의 종속성 속성입니다.)
- _renderer (컨트롤을 렌더링하는 컨트롤의 개인 필드입니다.> 내 실제 컨트롤에서는 그 중 일부이지만,이 예제에서는 그냥 해보기 만하면됩니다. 그런 식으로).
목표는 텍스트 상자와 같은 컨트롤의 텍스트를 설정에 대한 참조로 초기화되는 렌더러로 전달하는 것입니다.
제어는 다음과 같이 기록 사용하는 XAML : 즉시
<TextBox Text="Initial Text"
x:Name="TextSource"
Grid.Row="0" />
<local:CustomControl Grid.Row="1">
<local:CustomControl.Settings>
<local:CustomControlSettings Text="{Binding Path=Text, ElementName=TextSource, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
</local:CustomControl.Settings>
</local:CustomControl>
나도 같은 XAML을 사용하지만 "텍스트"에 대한 설정을 고정 된 값을 제공
다음 모든 것이 예상 작품으로하지만, 나는 그것을 구속력으로 바꿀 때 더 이상 초기 값을 얻지 못한다. 텍스트 아래로 통과와코드 :
렌더러 렌더러로 설정 텍스트를 결합
private void OnLoaded(object sender, RoutedEventArgs e) { _renderer = new ControlRenderer(); _renderer.Initialize(_renderArea, Settings); }
내부 텍스트 종속성 속성에 설정을 전달을
SetBinding(TextProperty, new Binding{Path = new PropertyPath(CustomControlSettings.TextProperty), Source = settings});
참고 : 영향을주지 않고 주석 처리를 제거 할 수 있으므로 나에게 묻는다면 문제가되지 않습니다.
And here´s a link to the demo solution I created.
귀하의 문제가 궁금합니다. 바인딩을 변경하고 이전 값이 손실된다는 것을 귀찮게합니다. – bradbury9
문제는 텍스트 상자의 값이 절대로 전달되지 않는다는 것입니다.) –
누군가 -1을 설명하기 위해 신경 써야합니까? –