2016-03-02 75 views
0

我在写一个Windows 10通用应用程序,其中我有一个ListView,其DataTemplate是一个UserControl。在那个UserControl里面有一个按钮,它的点击事件我想在我的MainPage上处理。从ListView中的UserControl处理事件

它基本上是一个联系人列表,并且按钮应该在点击时从列表中移除一个联系人,并且不知道如何处理UserControl的按钮点击。

这是用户控件的XAML:

<UserControl 
x:Class="DataBinding_Test1.ContactControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:DataBinding_Test1" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="50"> 
<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Dictionary1.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<Grid Background="{ThemeResource AppBarBackgroundThemeBrush}" 
     HorizontalAlignment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Name="ContactIconTextBlock" 
       Style="{StaticResource IconStyle}" 
       Text="{x:Bind myContact.ContactIcon}"/> 
    <TextBlock Name="ContactNameTextBlock" 
       Grid.Column="1" 
       Style="{StaticResource LabelStyle}" 
       Text="{x:Bind myContact.ContactName}" 
       RelativePanel.RightOf="ContactIconTextBlock"/> 
    <Button Name="RemoveContactButton" 
      Grid.Column="2" 
      Content="X" 
      VerticalAlignment="Stretch" 
      Click="RemoveContactButton_OnClick"/> 
    </Grid> 
</UserControl> 

这是本ListView控件内:

<ListView 
     Name="ContactsListView" 
     Grid.Column="1" 
     ItemsSource="{x:Bind ContactList}" 
     ItemTemplate="{StaticResource ContactListDataTemplate}" 
     SelectionMode="None"> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 

我怎样才能实现呢?

回答

2

您可以在用户控件背后的代码中添加事件处理程序,并在按钮的单击事件中调用它。背后

代码:

public event EventHandler OnRemoveContact; 

private void RemoveContactButton_OnClick(object sender, RoutedEventArgs e) 
{ 
    //... your existing code here 
    OnRemoveContact?.Invoke(this, new EventArgs()); 
} 

现在,你可以在你的DataTemplate使用事件到你的代码的MainPage

+0

非常感谢你的身后!我不是为什么之前没有考虑过它。 –