将列表框的选定项传递到 xaml

Posted

技术标签:

【中文标题】将列表框的选定项传递到 xaml【英文标题】:Passing a selected item of listbox into a xaml 【发布时间】:2017-12-01 23:37:28 【问题描述】:

我是使用 C# 编码的新手,我有使用 Laravel(php) 的背景编码。

我需要使用 CRUD 构建应用程序 (Windows 8.1)。但是在编辑中我遇到了问题,我需要知道如何将选定的项目传递到其他 xaml 文件中。

我需要将 MainPage 的选定项传递给 Editar

MainPage.xaml.cs

命名空间 SQLiteDemo /// /// 可以单独使用或在框架内导航到的空页面。 /// 公共密封部分类 MainPage : Page SQLiteAsyncConnection conn = new SQLiteAsyncConnection("dados.sqlite"); 公共主页() this.InitializeComponent(); conn.CreateTableAsync(); private async void Listar_Click(object sender, RoutedEventArgs e) 等待 Atualiza(); 私有异步任务 Atualiza() var query = conn.Table(); listBox.ItemsSource = 等待查询.ToListAsync(); 私人无效Novo_Click(对象发送者,RoutedEventArgs e) Frame.Navigate(typeof(Novo)); 私人无效Editar_Click(对象发送者,RoutedEventArgs e) /* var u = listBox.SelectedItem 作为用户; u.nome = "nome alterado"; 等待 conn.UpdateAsync(u); 等待 Atualiza(); */ listBox.SelectedItems.Add(listBox.SelectedItem as User); var u = listBox.SelectedItem 作为用户; Frame.Navigate(typeof(SQLiteDemo.Editar), u);

Editar.xaml

<Grid HorizontalAlignment="Left" Height="520" Margin="55,115,0,0" VerticalAlignment="Top" Width="1155">
    <TextBox x:Name="Nome"  HorizontalAlignment="Left" Margin="70,60,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="40" Width="990" PlaceholderText="Nome"/>
    <TextBox x:Name="Email" HorizontalAlignment="Left" Margin="70,140,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="40" Width="990" PlaceholderText="Email"/>
</Grid>

Editar.xaml.cs

namespace SQLiteDemo

    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    /// 
    public sealed partial class Editar : Page
    
        SQLiteAsyncConnection conn = new SQLiteAsyncConnection("dados.sqlite");

        public Editar()
        
            this.InitializeComponent();
            conn.CreateTableAsync<User>();
        

        private void SalvarEdit_Click(object sender, RoutedEventArgs e)
        
            /*
            var u = listBox.SelectedItem as User;
            u.nome = Nome.Text;
            u.email = Email.Text;
            conn.UpdateAsync(u);
            */

        

        private void Voltar_Click(object sender, RoutedEventArgs e)
        
            Frame.Navigate(typeof(MainPage));
        
    

一些截图:

主页

编辑页面

【问题讨论】:

【参考方案1】:

你传递参数 right 什么 left 只是为了在导航之后得到它。

将此函数添加到Editar.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)

   var user = e.Parameter as User;
   Nome.Text = user.nome;
   Email.Text = user.email;

【讨论】:

我如何将用户名和用户电子邮件放入 Editar.xaml 的字段中? 好的!我放了字段,但是,我如何从 MainPage.xaml.cs 调用 OnNavigatedTo?函数 Editar_Click() 你不知道。当这 => Frame.Navigate(typeof(SQLiteDemo.Editar), u);被调用时,将为你调用 OnNavigatedTo。这就是它在导航时调用的原因。在方法中设置断点。

以上是关于将列表框的选定项传递到 xaml的主要内容,如果未能解决你的问题,请参考以下文章

WPF XAML 列表框选定项边框颜色

将列表框选定项从一个 wpf 页面发送到另一个页面

如何将两个组合框的选定项与单个数据源分开?

如何将列表框选定项作为按钮中的命令参数传递?

如何在文本块中显示列表框选定项

在带有文本框的列表框中,如何关注添加的文本框?