에 대한 종속성 속성 및 OneWayToSource에 Grid.Visibility의 한방향 바인딩 나는 그리드이되는 가시성 속성이 으로 IsExpanded 부모 확장기 제어에 바인딩해야합니다. Grid.Visibility 변경, 내가 의 DataContext (뷰 모델)의 속성 (MyProperty)를 따라 변경할 때마다WPF는 : 뷰 모델 CLR 속성
.
이
내 XAML입니다 :<Grid Visibility="{Binding IsExpanded, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Converter={StaticResource BoolToVisibilityConverter}}" />
내가 프로그래밍 사용하여 뷰 생성자에서 바인딩을 설정 시도했다 : 이것은 단지 이미 설정 한 확장기에 바인딩을 대체 그러나
grid.SetBinding(VisibilityProperty, new Binding("MyProperty") { Source = DataContext });
XAML에서
나는 대상이 내보기 모델이고 소스가 대신하고 종속성 속성에 MyProperty을 ( 가시성에 바인딩) 그리드되도록 주변이 내리고 고려했다. 그러나 내 뷰 모델은 DependencyObject이 아니므로이 작업을 수행 할 수 없습니다.I는에가 및 MyProperty을 Expander.IsExpanded MultiBinding/MultiConverter 결합 Grid.Visibility 사용하여 시도했지만, 이것은 원하는 효과가 없다. Grid.Visibility이 의 결과로 업데이트 될 때 MyProperty이 Grid.Visibility로 변경되지 않습니다 변화를 Expander.IsExpanded.
이을 Expander.IsExpanded 다음 프로그램 Grid.Visibility에게 때마다 연결된 속성 변경을 변경하는 콜백 기능을 사용하려면 결합 그리드에 연결된 속성을 사용하고 작동하는 것 같다 유일한 옵션을 선택합니다. Grid.Visibility은 MyProperty에 바인딩됩니다. 이것은 단지 그것을하는 지저분한 방법처럼 보이지만, 나는 제안에 개방적이다.
나는 내가 할 노력하고있어 것은 거의 두 바인딩 하나는 종속성 속성 다른 것 CLR은에 재산에서 인, 반대 방향으로 어디에 두 갈래의 바인딩과 같은 것 같다.
어떤 도움을 주셔서 감사합니다 !!
_Expander_가 포함 된 _DataTrigger_에서 ** Grid.Visibility **를 설정하면 _Expander_가 _Grid_ 하위를 인식해야하므로 적합하지 않습니다. ** FindAncestor ** 바인딩을 사용하는 지점은 부모가 자식에 대해 알 필요없이 요소가 부모 요소에 반응하도록하려는 위치입니다. _Expander_ _ContentPresenter_있는 _UserControl_ 일부인 _Grid_ 있지 않을 수 있습니다. 앞서 언급했듯이 XAML에 이미 설정된 _Expander_에 대한 바인딩이 바뀌었기 때문에 프로그램 방식으로 문제가 해결되지 않았습니다. 그것을 집계하지 않습니다. – Neo