我在WPF中完成了一个表单,它已经有一个名为RateView的自定义控件。这个自定义控件有4个文本框(它们都应该正常工作)。它还包含一个按钮。
我有一个名为Extended Margin Info的第二个自定义控件,它还有一个只显示输出数据的XAML表单。
如何通过单击名为Rateview的自定义控件上的按钮,将XAML画布调到我的扩展信息XAML的主窗口,每次都在相同的位置?速率视图控制在主窗口上存在5次,因此在点击时将有5个按钮,每次使用extendedmargin信息的内容时,需要将弹出的ExtendedMargin Info输出到主屏幕的相同位置。
答案 0 :(得分:1)
单击按钮时,应调用Command
更新Property
某个ViewModel,该ViewModel会公开您要显示的当前ExtendedMarginInfo
的ViewModel。然后,您可以将此属性绑定到目标视图中Content Property
的{{1}}。您可以使用ContentControl
属性选择要View
显示的Control
。
答案 1 :(得分:0)
我想你想要显示一个弹出窗口,并改变它的内容放置不同的控件。
在1st创建自定义控件:
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);
}