바운드 속성 중 하나를 수정해야합니다. DataTemplate
. 이 템플릿 (중요한 부분 만)과 같이 정의된다 : DataTemplateSelector의 데이터 바인딩 변경
<DataTemplate x:Key="MyImageTemplate">
<Image>
<Image.Source>
<MultiBinding Converter="{StaticResource MyImageConverter}">
<Binding Path="Source" />
<Binding Path="TransparencyColor" />
<Binding Path="TransparencyTolerance" />
</MultiBinding>
</Image.Source>
</Image>
</DataTemplate>
은 조건에 따라, I는 다른 속성
SOURCE2에 소스 바인딩 제 변경할 필요가있다. 이와 함께 오후의 좋은 부분을 소비하는 데, 나는 나의
DataTemplateSelector
작업의 다음과 같은 간단한 코드를 만들 수 없습니다 :
Public Class MyDataTemplateSelector
Inherits DataTemplateSelector
Public Overrides Function SelectTemplate(item As Object, container As DependencyObject) As DataTemplate
Dim DT = DirectCast(Application.Current.FindResource("MyImageTemplate"), DataTemplate)
Dim Control = DirectCast(DT.LoadContent(), FrameworkElement)
Dim MB = BindingOperations.GetMultiBinding(item, System.Windows.Controls.Image.SourceProperty)
Dim Source2Binding As New Binding(NameOf(ImageVM.Source2))
Dim MB2 As New MultiBinding With {.Converter = MB.Converter}
MB2.Bindings.Add(Source2Binding)
MB2.Bindings.Add(MB.Bindings(1))
MB2.Bindings.Add(MB.Bindings(2))
Control.SetBinding(System.Windows.Controls.Image.SourceProperty, MB2)
Return DT
End Function
End Class
나는 그것도 할당하지 않는 것으로 확인되었습니다 새로 이미지의 소스 속성에 MultiBinding
생성 . 내가 도대체 뭘 잘못하고있는 겁니까?
흠 ... 말이 되네. 제 생각에'LoadContent()'는'DT' 객체 (*'XmlDocument'의'Load'와 비슷합니다) 안에 * 내용을로드합니다. 분명히 나는 틀렸다. 지금은 두 개의 동일한 'DataTemplate'을 XAML 내에서 정의했으며이 속성은 하나의 속성 만 다릅니다. 나는 조건에 따라 적절한 것을 반환한다. 귀하의 의견을 보내 주셔서 감사합니다. – dotNET