在重新调整窗口大小时,使用嵌套控件保持WPF边距

时间:2015-08-05 15:23:46

标签: c# wpf xaml

我是WPF的新手,我在重新调整主窗口时遇到了一些问题。我设置的方式是我有一个名为MainMapTab的.xaml文件,它基本上只是一个带有画布的DockPanel。在MainMapTab.xaml.cs文件中,我们有以下代码。

public partial class MainMapTab : UserControl
{
    public MainMapTab()
    {
        InitializeComponent();

        Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(AddMapKey));
    }

    [Dependency]
    public IUnityContainer UnityContainer { get; set; }

    public MainTabPanel MainTabPanel { get; set; }

    private void AddMapKey()
    {
        var myControl = UnityContainer.Resolve<MapKey>();
        myControl.MainMapTab = this;

        Canvas.SetLeft(myControl, Map.ActualWidth - 525);

        Map.Children.Add(myControl);
    }
}

在Main Map选项卡的初始加载中,子控件位于完美位置。但是在调整主窗口的大小时,子控件仍处于初始位置,因此会浪费大量空间。我想要做的是将它粘贴在主地图选项卡的右上角,但同时保持主地图选项卡上的画布仍然可以在将来进行编辑。目标是将另一个控件添加到该画布,并允许用户单击并拖动它们。我认为问题在于Canvas.SetLeft方法调用,但我不确定会有什么替代方案。

如何解决这个问题的任何想法将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

如何使用Canvas.SetRight代替Canvas.SetLeft

答案 1 :(得分:0)

更改为堆栈面板而不是建议使用的Canvas修复了重新调整大小的问题。单击并拖动此窗口上的UI元素可能仍然存在问题。但是可以使用Stack Panel中的嵌套画布来解决它。