alexandershi000 2024-01-18 15:51 采纳率: 0%
浏览 6
已结题

WPF的Dialog向WIndow传值

前提:在WPF中使用HandyControl框架
问题:假设Dialog中有一个ListBox,如何在选中ListBoxItem后,向MainWindow传递ListBoxItem的信息。
要求:请给出简要代码。
谢谢。

  • 写回答

19条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-18 15:52
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    问题解决方案如下:

    1. 在Dialog中定义一个委托和事件,用于传递选中的ListBoxItem信息

    首先,在Dialog的代码文件中定义一个委托和事件,用于传递选中的ListBoxItem信息。例如:

    public delegate void ListBoxItemSelectedEventHandler(object sender, ListBoxItem selectedItem);
    public event ListBoxItemSelectedEventHandler ListBoxItemSelected;
    

    然后,在ListBox的SelectionChanged事件中触发该事件,并传递选中的ListBoxItem信息。例如:

    private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (ListBoxItemSelected != null && listBox.SelectedItem != null)
        {
            ListBoxItem selectedItem = (ListBoxItem)listBox.SelectedItem;
            ListBoxItemSelected(this, selectedItem);
        }
    }
    

    2. 在MainWindow中订阅Dialog的事件,并处理传递的ListBoxItem信息

    在MainWindow的代码文件中,订阅Dialog的ListBoxItemSelected事件,并在事件处理方法中处理传递的ListBoxItem信息。例如:

    private void ShowDialogButton_Click(object sender, RoutedEventArgs e)
    {
        MyDialog dialog = new MyDialog();
        dialog.ListBoxItemSelected += Dialog_ListBoxItemSelected;
        dialog.ShowDialog();
    }
    
    private void Dialog_ListBoxItemSelected(object sender, ListBoxItem selectedItem)
    {
        // 在这里处理传递的ListBoxItem信息
        // 例如,展示ListBoxItem的内容
        MessageBox.Show(selectedItem.Content.ToString());
    }
    

    这样,当Dialog中的ListBox选中了一个ListBoxItem后,将会触发ListBoxItemSelected事件,MainWindow会接收到该事件并处理传递的ListBoxItem信息。

    希望这个解决方案对您有所帮助!请注意,代码仅为示例,具体实现可能需要根据您的实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 创建了问题 1月18日

悬赏问题

  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献
  • ¥15 很抱歉出现错误word不能启动(24),如何解决?
  • ¥15 javascript下载网络图片
  • ¥15 excel中的填充效果 对应poi的哪个对象啊
  • ¥20 急需求一个 手机抓包app支付链接脚本
  • ¥15 byte[]转String后值为[object Object]
  • ¥20 STM32 驱动AD7734,AD7734读出错误数值: 16777215不能变