WPF(MVVM)菜单栏小勾与窗口绑定

2017-09-07 19:50:33来源:CSDN作者:baidu_38131614人点击

分享

窗口打开,前面菜单栏前面小勾(图标显示)

代码和我上一编差不多,只不过在菜单界面,也就是主界面中加了一个定时器,去定时查看窗口就否开启。

IsCheckable="True"   是否显示小勾     IsChecked="True"第一次开启时 小勾能显示 因为我的工具窗口,软件一开启就会打开。

  MainPageViewModel mainpageviewmodel;        public MainPage()        {            InitializeComponent();            //在这里窗体加载的时候不执行文本框赋值,            //窗体上不会及时的把时间显示出来,而是等待了片刻才显示了出来            ShowTime();                ShowTimer = new System.Windows.Threading.DispatcherTimer();            ShowTimer.Tick += new EventHandler(ShowCurTimer);//起个Timer一直获取当前时间            ShowTimer.Interval = new TimeSpan(0, 0, 0, 1, 0);            ShowTimer.Start();            mainpageviewmodel = new MainPageViewModel( );            this.DataContext = mainpageviewmodel;        }

这里是主窗口中,我本来就是要显示时间的。所以直接在这个定时器中判断了

 //定时器时间显示        public void ShowCurTimer(object sender, EventArgs e)        {            ShowTime();            //加上一些判断             //菜单中 工具栏小勾显示问题            if (mainpageviewmodel.toolflag == 1)            {                tool.IsChecked = true;            }            else            {                tool.IsChecked = false;            }        }        //ShowTime方法        private void ShowTime()        {            //获得年月日            this.tbDateText.Text = DateTime.Now.ToString("yyyy/MM/dd");   //yyyy/MM/dd            //获得时分秒            this.tbTimeText.Text = DateTime.Now.ToString("HH:mm:ss");        }
当然,这里也能判断
mainpageviewmodel.toolbar==null;
toolbar窗口是不是为NULL;

 ///工具栏        ///提升为公有方法,给热键(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);            }
这里的win是个
  //关闭窗口链表
   List<Window> win=new List<Window> ();

主要是切换用户时  打开的窗口没关闭BUG,这时

 public void LogoutCommandExecute(Window window)        {            /*打开登入窗口*/            Shell shell = new Shell();            shell.Show();            /*关闭当前窗口*/            if (window != null)            {                //window.Close();                //重写后 不能直接调用,                                //注销前 关闭子窗口 当窗口过多可以用数组或链表                if (p_rail != null)                {                    p_rail.Close();                    p_rail = null;                }                //链表关闭                foreach (Window s in win)                {                    s.Close();                }                //主窗口休眠                window.Hide();                window = null;            }

这里Sell为登入界面。。。

这里我重写了主窗口的关闭函数  主要是为了能在关闭时弹窗提示时否关闭程序。。。。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台