WPF(MVVM)中 工具窗口绑定主窗口ViewModle,

两个View 绑定一个ViewModle.

这样工具箱中的就不用在次实现,

我是在主窗口中开起的工具箱,软件一起到就开始,工具箱.xaml.cs

 public partial class MyToolBar : Window
    {
        private DispatcherTimer timer;
    
        //通过传参两窗口同时绑定一个ViewMode
        public MyToolBar( MainPageViewModel md)
        {
            
            InitializeComponent();
            Loaded += new RoutedEventHandler(ToolBar_Loaded);
            this.DataContext = md;

        }


        /// <summary>
        /// 工具箱永远置顶
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void ToolBar_Loaded(object sender, RoutedEventArgs e)
        {
            //定时器
            timer = new DispatcherTimer();
            //1秒触发一次定时器
            timer.Interval = TimeSpan.FromSeconds(1);
            timer.Tick += timer1_Tick;
            timer.Start();

            //....

            //timer.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //定时处理

            this.Topmost = true;
        }
定时器定时新,使工具窗口一直在最前

在主窗口ViewModle中

///工具栏
        ///提升为公有方法,给热键(T)使用
        /// </summary>
        public  void ToolBarExecute(Window window)
        {
            if (toolbar == null)
            {
                toolflag = 1;
                //传参绑定
                toolbar = new MyToolBar( this);
                //固定窗口位置
                toolbar.WindowStartupLocation = WindowStartupLocation.Manual;
                toolbar.Left = 0;
                toolbar.Top = 80;
                toolbar.Owner = window;
                toolbar.Show();
                win.Add(toolbar);
            }
            else if(toolbar !=null )
            {
                //再次点击关闭窗口
                toolbar.Close();
                toolbar = null;
                toolflag = 0;
                win.Remove(toolbar);
            }


        }
这样 工具箱中的按件就能与主窗口一样了

当然还能增加一些自己的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值