나는 ComboBox
와 함께 컨트롤을 가지고 :해당 DependencyProperty에 대한 PropertyChangedCallback 내에서 DependencyProperty의 값 변경
<ComboBox x:Name="TraceComboBox"
ItemsSource="{Binding SingleChannelList}"
SelectedItem="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type cc:LogicTriggerSimpleLevelControl}},
Path=SelectedTrace, Mode=TwoWay}">
다음은 ComboBox
를 포함하는 OuterControl의 SelectedTrace
속성입니다.
ComboBox
(SingleChannelList[2]
)에서 세 번째 객체를 선택하면 변경 핸들러가 발생합니다. 그런 다음 UpdateSelectedTrace()
루틴으로 들어갑니다. 이 시점에서 SelectedTrace
의 값은 물론 SingleChannelList[2]
입니다. 이제 UpdateSelectedTrace()
루틴은 SelectedTrace
속성을 목록의 첫 번째 객체 (SingleChannelList[0]
)에 강제로 설정합니다.이 객체는 첫 번째 객체 안에 중첩 된 다른 변경 핸들러를 시작합니다. "SelectedTrace"는 이제 SingleChannelList [0]와 동일하므로 ComboBox는 SingleChannelList [0]도 선택 항목으로 표시해야합니다.
이 모든 것은 다음과 같이 대담하게 직면하는 마지막 문장까지 디버거를 따라갈 때 발생합니다.
SelectedTrace
는 이제 SingleChannelList[0]
와 같지만 ComboBox
은 선택한 항목으로 SingleChannelList[2]
을 표시합니다. 나는 BindingExpression
에서 UpdatingTarget
을 시도했지만 여전히 SelectedTrace
속성은 ComboBox
가 SingleChannelList[2]
을 계속 표시하는 동안 SingleChannelList[0]
값을 보유합니다. 이러한 바인딩은 안전하고 테스트되었으며 항상이 작업을 시도 할 때까지 계속 작동했습니다. 아무도 이것이 왜 제대로 작동하지 않는지 말해 줄 수 있습니까?
원래 변경 사항이 변경되는 상자에서 비롯된 것이라면 여전히 작동하지 않습니다. 대신 모든 일이 끝난 후 상자를 열면 제대로 작동합니다. 해키지만 작동합니다. 진짜 질문은 원래 시나리오가 작동하지 않는 이유는 무엇입니까? – Kamiikoneko