2016-08-15 53 views
0

的XAML:WPF列表视图中添加点击功能项

<Window x:Class="Berichtensysteem.Window1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:local="clr-namespace:Berichtensysteem" 
      mc:Ignorable="d" 
      Title="Mailclient" Height="800" Width="800" 
      > 

     <Grid> 

      <UserControl> 
       <Grid Margin="0,-10,177,10"> 
        <Button x:Name="inboxClick" Content="Inbox" HorizontalAlignment="Left" VerticalAlignment="Top" Width="121" Margin="1,56,0,0"/> 
        <Button x:Name="outbox" Content="Verzonden berichten" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" Margin="1,96,0,0"/> 
        <Button x:Name="deleted" Content="Verwijderde berichten" HorizontalAlignment="Left" VerticalAlignment="Top" Width="121" Margin="1,76,0,0"/> 

       </Grid> 
      </UserControl> 


      <ListView Margin="126,45,0,0" Name="inbox"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Header="From" Width="70" DisplayMemberBinding="{Binding from}" /> 
         <GridViewColumn Header="Subject" Width="120" DisplayMemberBinding="{Binding subject}" /> 
         <GridViewColumn Header="Content" Width="150" DisplayMemberBinding="{Binding content}" /> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </Grid> 
    </Window> 

后面的代码:

public partial class Window1 : Window 
    { 
     private static databaselinkDataContext _dataDC = new databaselinkDataContext(); 
     public Window1(String username) 
     { 
      InitializeComponent(); 
      sendMail(); 



      List<email> _mails = _dataDC.emails.ToList(); 
      inbox.ItemsSource = _mails; 

     } 

// Adding an email to the database because I haven't set up send mails yet. 

     public void sendMail() 
     { 
      var _email = new email(); 
      _email.content = "Mijn inhoud"; 
      _email.from = "hallo"; 
      _email.subject = "myemailsubject"; 
      _email.layout = ""; 

      _dataDC.emails.InsertOnSubmit(_email); 
      _dataDC.SubmitChanges(); 
     } 
    } 
} 

所以。我有我的邮件,我已经设法用列表视图在屏幕上显示它们。我想在单击它时显示电子邮件的全部内容。要做到这一点我需要的东西:

  1. 添加一个点击侦听器到每个列表视图项目(类似于Android的recyclerview?)。
  2. 将listview替换为电子邮件的内容,同时保持我的usecontrol。

任何简单的方法来做到这一点?

回答

0
  1. 作为选项添加事件监听器的PreviewMouseLeftButtonUp:
<ListView Name="inbox" PreviewMouseLeftButtonUp="Inbox_OnPreviewMouseLeftButtonUp"> 
  • 你的第二个建议是不明确的。实施取决于你想达到的结果和行为。 如果要临时更改listView项目的界面风格,可以通过编程方式更改其风格。但从那以后,用户如何改变其外观?这不是一个明显的行为。
  • 另一种选择:使用DataTemplate中与扩张(自定义列表项元素),在那里你可以显示或隐藏其他的电子邮件信息(example)。或者你可以在ListItem上显示,点击一个新窗口,在上面的listItems区域(example