繁体   English   中英

弹出窗口WPF表单自定义控件内容

[英]PopUp Window WPF Form Custom Control Content

我在WPF中完成了一个表单,该表单上已经有一个名为RateView的自定义控件。 此自定义控件具有4个文本框(它们均应正常工作)。 它还包含一个按钮。

我有第二个自定义控件,称为扩展边距信息,该控件还具有XAML表单,该表单仅显示输出数据。

如何通过单击名为Rateview的自定义控件上的按钮,将XAML画布每次都移到同一位置的扩展保证金信息XAML的主窗口中? Rateview控件在主窗口中存在5次,因此单击时有5个按钮,每次需要将ExtendedMargin Info的弹出窗口输出到带有相同的ExtendedMargin Info内容的主屏幕上。

单击按钮后,应调用一个Command ,该Command将更新某些ViewModel的Property ,以公开要显示的当前ExtendedMarginInfo的ViewModel。 然后,您可以将此属性绑定到目标视图中ContentControlContent Property 您可以使用ContentControl.ContentTemplateSelector属性选择希望Control显示的View

我猜您想显示一个弹出窗口,然后将其内容更改放置在其他控件中。

首先,创建您的自定义控件:

balloon = new LogEntryInfoBalloon();
        balloon.SetMainWindow(this);
        balloon.DataContext = vm.NotificationViewModel;

然后创建Popup控件(System.Windows.Controls.Primitives):

localPop = new Popup();
        localPop.AllowsTransparency = true;
        localPop.Placement = PlacementMode.AbsolutePoint;
        localPop.StaysOpen = true;
        localPop.PlacementTarget = this;
        localPop.Child = balloon;

放置目标指向MainWindow。

定义将关闭(隐藏)气球的计时器:

localPopTimer = new Timer(new TimerCallback(CloseLocalPopup));

关闭函数:

private void CloseLocalPopup(object args)
    {
        var act = new Action(() =>
        {
            localPop.IsOpen = false;
        });
        Dispatcher.BeginInvoke(act, null);
    }

显示气球代码如下所示:

private void ShowNotifyBaloon(NotifyBaloonViewModel vm)
    {
        var act = new Action(() =>
        {
            localPop.IsOpen = true;
            localPopTimer.Change(4000, Timeout.Infinite);
        });
        Dispatcher.BeginInvoke(act, null);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM