两个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);
}
}
这样 工具箱中的按件就能与主窗口一样了
当然还能增加一些自己的功能。