none
如何从弹出的UerControl中获取数据? RRS feed

  • 问题

  • 我自己设计了一个UerControl,里面有输入栏,并将其放入Popup.Child中,当我在MainPage中点击一个按钮时,动态创建一个Popup,并显示UserControl,并且将MainPage.IsEnable=false,使之成为一个模态对话框。现在的问题是,我想在MainPage中接收到UserControl中输入的数据,而两者之间没有什么联系,请问应该怎么做?


    Dino Wu

    2012年9月6日 4:59

答案

全部回复

  • 用x:Name 或者 Name 属性命名你的UserControl, 然后用Popup对象的(Child as  XXX).FindName 去找到这个UserControl, 获得其值。

    比如你的Popup里面直接是一个Grid,则可以这么写:

    (popup.Child as Grid).FindName("your usercontrol name");


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月7日 6:01
    版主
  • 
    m_popup = ref new Popup();
    UIElement^ myUI = ref new MyUserControl();
    m_popup->Child = myUI;
    m_popup->VerticalOffset = 100.0;
    m_popup->HorizontalOffset = 100.0;
    m_popup->IsOpen = true;
    用popup对象的(child as XXX).FindName 不太明白。popup是动态创建,并未在popup->child中加入Grid,而是直接传个UserControl类啊。 您的写法不太明白

    2012年9月7日 6:47
  • 那这样你直接可以用popup->Child 拿到数据:var value = safe_cast<MyUserControl^>(m_popup->Child)->XXX;


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月7日 7:15
    版主
  • 明白!多谢Bob
    2012年9月7日 7:31
  • 还有一个问题:

    该popup是由button按钮触发弹出的,能否在鼠标点击该popup空间区域范围外的任意位置,包括button时,该popup消失,在继续点击button时能触发弹出?

    实现的模式跟微软自带的camera app中camera option功能一样.

    2012年9月7日 7:47
  • 外面最顶层的Grid 注册一个PointerPressed 事件 在里面判断 如果  Popup.IsOpen == true,  则设置为false.


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us


    2012年9月10日 9:44
    版主
  • 忘了,还有一个简单的方法,设置 Popup.IsLightDismissEnabled = true;


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月17日 8:47
    版主