[英]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。 然后,您可以将此属性绑定到目标视图中ContentControl
的Content 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.