我正在使用內容對話框在網格中的項目被選中時顯示實例數據。在Windows通用應用程序中綁定到xaml頁面的DataContext
在調用頁面的視圖模型中,選擇某個項目時,將執行以下方法。
public virtual void ItemSelected(object sender, object parameter)
{
var arg = parameter as Windows.UI.Xaml.Controls.ItemClickEventArgs;
var clickedItem = arg.ClickedItem;
var item = clickedItem as ItemsModel;
var dialog = new ItemsDialog();
dialog.DataContext = item;
dialog.ShowAsync();
}
這將顯示對話框,並按預期顯示內容。現在我試圖將我的xaml分成不同的模板,並且我試圖使用ContentControl
來顯示相應的模板。我寫了一個DataTemplateSelector
來幫助選擇正確的模板,但現在我無法弄清ContentControl
的數據綁定(請參閱下面的簡化版本)。
<ContentDialog.Resources>
<UI:MyTemplateSelector x:Key="MyTemplateSelector"
Template1="{StaticResource Template1}"
Template2="{StaticResource Template2}"/>
<DataTemplate x:Key="Template1"/>
<DataTemplate x:Key="Template2"/>
</ContentDialog.Resources>
<StackPanel>
<ContentControl DataContext="{Binding}"
ContentTemplateSelector="{StaticResource MyTemplateSelector}"/>
</StackPanel>
當調試到我ContentTemplateSelector
,我結合總是null
。我試過各種形式的綁定語法,但沒有運氣。如何正確設置ContentControl
的DataContext
到ContentDialog
的DataContext
?
我也嘗試設置'Content =「{Binding}」'沒有運氣。我會看看你的樣品。 – earthling
通過您的示例進行調試,我注意到第一次通過'SelectTemplateCore'該項目爲空,因此調用了'base.SelectTemplateCore'。這第二次項目不是null。我沒有調試到我的代碼。它現在在工作,謝謝! – earthling