2013-07-15 65 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