1. 가 나는 그것이 "GE의 경우이, UserControl을의 종류에 따라 달라집니다 말을 MVVM을 구현 할 수있다 확신 neric "컨트롤 내부적으로 DataContext와 아무 관계가 없어야하므로 DataContext를 변경할 수 있어야합니다. 예를 들어 Caption
및 ImageSource
속성을 노출하는 UserControl을 만들면 내부적으로 DataContext와 독립적으로 바인딩해야합니다. 인스턴스에 바인딩 할 수 있으며 DataContext도 변경할 수 있습니다. 반면에 UserControl을 내가 UserControl을이 뷰 모델에 결합 할 것으로 예상 것 뷰 모델에 대한 뷰가있는 경우
<uc:ImageButton DataContext="{Binding ButtonInfo}"
Caption="{Binding Caption}"
ImageSource="{Binding Image}"/>
:
여기
<uc:ImageButton Caption="{Binding ButtonInfo.Caption}"
ImageSource="{Binding ButtonInfo.Image}"/>
한 다음 바인딩을 약간 단순화의 DataContext를 변경할 수 있습니다 DataContext를 기준으로 내부적으로 속성 현재 DataContext를 이미 아무것도하지 않고 간단한 예를이해야 할 해당 뷰의 뷰 모델 인 DataTemplate을 너무
, 즉
<v:StatisticsView />
전달 될 뷰 모델이 현재의 DataContext의 속성에있는 경우
당신 뿐만 아니라 DataContext에 바인딩 할 수 있습니다
<v:StatisticsView DataContext="{Binding StatisticsViewModel}"/>
2. 이 내가 말할 것 중 하나의 방법을 처리 할 수 있습니다, 특히 경우 하 세 가지 속성만으로도 그 속성을 만들 수있는 번거 로움이 없습니다. 의존성과 같은 몇 가지 측면을 고려해 볼 수 있습니다. 세 가지 속성을 하나의 대상으로 묶는 것이 합리적입니까? (1)에 언급 된 바와 같이 그것이 소비자가 (현재의 DataContext 상속 또는 명시 적으로 결합하여 암시 적)을 StatisticsViewModel
전달해야 StatisticsView
만약
3. 이, UserControl을 자체에서 명백하다.
사용자 정의 컨트롤의 기능은 무엇입니까? 동작이 VM 내부의 일부 속성에 의존합니까? 일반적으로 소비자는 자신이 적합하다고 생각하는 속성을 자유롭게 설정하거나 바인딩 할 수 있습니다. 사용자 정의 컨트롤의 동작을 조정할 수있는 대부분의 작업은 속성 (DP)으로 제공됩니다. – Gishu
컨트롤은 원시 데이터를 가져 와서 삭제합니다. 또한 연마 된 데이터를 UI에 표시되는 속성으로 노출합니다. VM에 원시 데이터를 연마 된 데이터로 변환하는 논리가 포함되어 있습니다. –
은 UserControl 동작처럼 들리지 않습니다. 하나의 데이터 구조체를 가져와 다른 구조체를 출력하는 처리/변환/변환기 클래스와 비슷합니다. 그런 다음이 새 구조체를 일반 WPF 데이터 바인딩을 통해 UI에 바인딩 할 수 있습니다. – Gishu