0
我有一個電話應用程序頁面(Main.xaml),其中包含ItemsControl
和其項目的數據模板。將事件處理程序添加到獨立ResourceDictionary文件中模板中的ItemsControl項目
<phone:PhoneApplicationPage.Resources>
<local:MainItemsViewModel x:Key="mainItems" />
<DataTemplate x:Key="ItemTemplate">
<Grid Tap="Item_Tap">
<!--....-->
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
<!--...a lot of xaml...-->
<ItemsControl
x:Name="MainCanvas"
DataContext="{StaticResource mapItems}"
ItemsSource="{Binding Path=Buttons}"
ItemTemplate="{StaticResource ItemTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Width="4000" Height="4000" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
如上圖所示,DataTemplate中具有在後臺代碼文件(MainPage.xaml.cs中)定義的事件處理程序:
private void Item_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
FrameworkElement fe = sender as FrameworkElement;
//working with fe...
ApplicationBar.IsVisible = true;
e.Handled = true;
}
而且一切都運行完美。但我想將數據模板移動到單獨的ResourceDictionary文件(ResDict.xaml)。當然,由於Item_Tap事件處理程序現在無法被觸發,所以出現錯誤。是否可以在ResourceDictionary中包含一個可調用Item_Tap方法的事件處理程序?