我有一个电话应用程序页面 (Main.xaml),其中包含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 方法的事件处理程序?