バインドされたプロパティの1つを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>
が条件に応じて、私は別のプロパティ
ソース2に
ソースから結合最初に変更する必要があります。私はそれもイメージのSourceプロパティに、この新しく作成された
MultiBinding
を割り当てていないことを確認しました
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
:これで午後の大半を過ごした、私は私のDataTemplateSelector
仕事の次の簡単なコードを作成することはできません。私は間違って何をしていますか?
Hmm ...意味があります。私の印象は、 'LoadContent()'が( 'XmlDocument'の' Load'と同じように) 'DT'オブジェクトの中に*のコンテンツをロードするという印象でした。明らかに私は間違っていた。今のところ私はXAML内に2つの同一の 'DataTemplate'を定義しました。私は条件に基づいて適切なものを返す。あなたのご意見ありがとうございます。 – dotNET