1

我以一种可能不太容易理解的方式问了同样的问题,然后再试一次。

在我的 ModelView 中,我有很多类,每个类都有两个对应的 UserControl。对应的UserControls的名字是“ue”+“classname”和“ub”+classname。

在我的视图中,我有两个 ContentControls 并使用两个转换器,它们从原始类名(例如 CriteriaList)转换为相应 UserControl 的实例(例如 ueCriteriaList)。

功能:显示的 UserControl 实际上是所需 UserControl 的实例(例如 ueCriteriaList 或 ubCriteriaList)。这意味着 Converter 获取要显示的原始类的类名并创建相应 UserControl 的功能实例。

什么不起作用:显示的 UserControl 不显示实际类的实例的实际内容。

这是我的转换器代码:

Public Class ueControlConverter
Implements IValueConverter

Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.Convert
    Dim aComp As aComponent = value
    Dim AssemblyKlassenname As String = aComp.GetType.ToString
    Dim AssemblyName As String = Left(AssemblyKlassenname, AssemblyKlassenname.IndexOf(".") + 1)
    Dim KlassenName As String = Right(AssemblyKlassenname, AssemblyKlassenname.IndexOf(".") - 1)
    Dim t As Type = Type.GetType(AssemblyName & "ue" & KlassenName)


    Dim o As UserControl = Activator.CreateInstance(t)
    o.DataContext = value

    Return o

End Function

Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
    Return value
End Function

End Class

当我在“Return o”停止调试时,它会显示 DataContext = “...CriteriaList” 实际实例的内容。但它没有显示在实际的窗口中。

ContentControl 绑定:

ContentControl Content="{Binding Path=my_aComponent,
                         Converter={StaticResource _ueControlConverter},
                         diag:PresentationTraceSources.TraceLevel=High, 
                         UpdateSourceTrigger=PropertyChanged}"

我的问题: 1. 我可以使用 Converter 将 UserControls 绑定到使用“相关”名称的对应类吗?

  1. 我的错误是什么?

  2. 我需要做什么才能显示实际类实例的内容?

感谢您的回答。

4

0 回答 0