我有一個用戶控件,動態地嵌入一些基於類似DataTemplates的其他控件。WPF DataContext綁定不發生
我的控件的ViewModel具有綁定屬性,用於託管子控件的DataContext和ContentTemplate。然而,當我運行模板綁定罰款和初始化,但DataContext永遠不會被拿起,即使有一個DataContextChanged事件。
<ContentControl Name="SessionControl1" DataContext="{Binding SessionItem1}" ContentTemplate="{Binding Source={StaticResource ViewModel},Path=Session1Template}" />
現在,作爲一個測試,我把我想要的切換控制(AudioCard.xaml)之一,在同一個地方使用它直接像這樣嘗試:
<local:AudioCard DataContext="{Binding SessionItem1}" />
這工作得很好,控件將在動態情況下初始化,並且DataContextChanged事件以正確的綁定觸發。這導致我認爲綁定到ContentControl中的DataContext不起作用。
兩個問題: 1)有沒有簡單的方法來解決它?
2)有沒有更好的方法來做到這一點?
編輯:基於第一個回答,我改變了代碼看起來像這樣:
<ContentControl Name="SessionControl1" Grid.Row="0" Grid.Column="0" ClipToBounds="False" Height="128" Width="128"
DataContext="{Binding SessionItem1}"
ContentTemplateSelector="{StaticResource ProximitySessionCardTemplateSelector}" />
我可以看到代碼進入我的內容模板選擇,但我在選擇對象爲空。我應該對其他東西有約束力嗎?
好吧,我創建了一個模板選擇器類來獲取我的數據模板,將其作爲用戶資源放置在XAML中,所以我的綁定現在看起來像這樣:' '我可以在模板選擇器類中斷點並看到它被調用,但是我對datacontext的綁定仍然是空的。 –
2011-03-03 14:09:46