2013-07-15 63 views
0

我有一个抽象基类aComponent和亚类CriteriaListQuestion负载WPF用户控件动态

对于每个子类两个对应UserControl S的具有名称等,ubCriteriaListueQuestionubQuestion我有等。(ue代表短为“UserControl与输入元件”,并为ubUserControl带有按钮”。)

DataContext的是“ControllerClass”与一个属性作为实际aComponent实例的获取者。当aComponent实例更改(例如CriteriaList的实例)时,我想加载相应的UserControl(在本例中为ueCriteriaList和ubCriteriaList)。

我有两个转换器和ueControlConverterubControlConverter内搭类名称(例如CriteriaList),并返回一个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 

在XAML我有结合Content="{Binding Path=my_aComponent, Converter={StaticResource _ueControlConverter}和秒。显示了右边的UserControl,但没有与my_aComponent绑定。

我该怎么办?

+1

提示:.NET比VB6更好! Dim split As String = assemblyKlassenname.Split({“。”c},2)''Dim assemblyKlassenname As String = split(0)''Dim klassenName As String = split(1)' – Ryan

回答

0

您还需要通过绑定为您的ContentControl对象提供DataContext属性。

+0

我怎样才能得到它转换器并在那里使用它? – PGoe

+0

嗨minitech - 感谢编辑和提示“.Split”。 – PGoe

+0

嗨@Potecaru Tudor,谢谢你的回答。在我的转换器中,我可以看到生成的UserControl具有DataContext Null。这在我的“o.DataContext = value”后不会改变。我如何将生成的UserControl-Object与我的DataContext连接起来? – PGoe