2016-03-02 86 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

非常感謝你的身後!我不是爲什麼之前沒有考慮過它。 –

相關問題