내가 만든 일반 클래스에 WPF를 바인딩 할 수 있습니까? 확실히wpf가 제네릭 클래스에 바인딩 할 수 있습니까?
It is basically Class<T> where T:MyInterface
Can I Bind to Class<T> and use MyInterface to Bind It?
내가 만든 일반 클래스에 WPF를 바인딩 할 수 있습니까? 확실히wpf가 제네릭 클래스에 바인딩 할 수 있습니까?
It is basically Class<T> where T:MyInterface
Can I Bind to Class<T> and use MyInterface to Bind It?
WPF는 제네릭 클래스의 인스턴스를 포함하여 CLR 개체 (또는 CLR을 통해 노출 된 COM 개체)에 바인딩 할 수 있습니다. 개체는 선택적으로 INotifyPropertyChanged 또는 DependencyObject 하위 클래스를 구현하여 해당 속성의 변경 내용을 바인딩에서 검색 할 수 있습니다. 그렇지 않은 경우 바인딩이 평가 될 때 속성 값이 한 번 복사되지만 업데이트되지 않습니다.
기술적으로 WPF는 "클래스에 바인딩"하지 않습니다.이 클래스는 해당 클래스의 인스턴스 인 개체에 바인딩됩니다. 따라서 귀하의 질문에 대한 대답은 "아니오"일 것입니다. 그러나 제네릭 클래스의 인스턴스에 바인딩 할 수 있는지 묻는 것이라고 가정합니다.이 경우 응답은 "예"입니다.
WPF에는 제네릭 클래스와 관련하여 제한이 있습니다. XAML 파서는 {x:Type }
태그 확장 내에서 참조 할 수 없으므로 대부분의 경우 XAML에서 일반 클래스 및 참조의 구체적인 하위 클래스를 만들어야합니다 XAML에서. 단, XAML의 가장 바깥 쪽 요소는 x:TypeArguments
특성을 사용하여 제네릭 클래스를 지정할 수 있습니다.
, 왜하지 않을까요? Class<T>
은 유형 일뿐입니다. 잘 바인딩해야합니다.
WPF는 CLR 개체에 바인딩 할 수 있습니다. 노출되는 속성은 알림 (ala, INotifyPropertyChanged)을 지원해야하며 해당 속성을 처리하는 유형 (ala, ObservableCollection)이어야합니다.
해당 사항이있는 경우 개체가 데이터를 제공하는 데 적합해야합니다.