2011-11-01 97 views
0

访问一个窗口的内容我需要它有两个窗口的应用程序:如何从第二个窗口

窗口1 包含6个倒计时。

窗口2 这里将设置各个定时器的设置。

什么是这个功能的最佳解决方案?我将使用C#WPF和.NET 4.0

+1

你尝试了什么?什么阻止你应该是微不足道的? –

+0

应该很简单,只需要两种形式并将它们实例化即可。只要它们是公开的,您可以直接引用每个表单上的组件(除非您使用多个线程)。 – Polynomial

+0

@Polynomial从不建议从另一个窗体访问一个窗体的UI控件。这是不健壮的,并建议使用方法,属性和OO approahc代替。如果您公开名称文本框而不是简单的名称属性,这将创建一个依赖关系,并且代码将不再以相同的方式工作,或者如果文本框被替换为标签,代码将需要太多更改,就像简单的示例一样... –

回答

3

MVVM

CountDownView 代表一个计时器观,简单的TextBlock绑定到CurrentValue财产或一些更漂亮的/复杂的,而不是TextBlock的

2. CountDownViewModel 代表一个计时器本身,在视图上显示属性int CurrentValue显示为倒计数。要实现倒计时,您可以使用Sytem.Timers.TimerElapsed event处理器只是递减CurrentValue的属性值

TimersView - 为第一窗口6个定时器

  • ItemsCountrol/ListView控件,
  • 的ItemTemplate - CountDownView
  • ItemsSource - 绑定到Timers属性TimersViewModel,基本上TimersViewModel shoudl被设置为TimersView的DataContext,所以你woudl EB能够指定以下的结合:(以及每个项目将被绑定到单个定时器)

    <ListView ItemsSource="{Binding Timers}" ... />

4. TimersViewModel - 暴露IEnumerable<CountDownViewModel> Timers属性

5. SettingsView - 设置面板

PS:INotifyPropertyChanged适用于暴露于Views的所有VM属性

作业为您

  1. 了解MVVM原则,WPF绑定和命令,这将是对你有所帮助带齐你的职业生涯
  2. TimersViewModel之间实现关系,SettingsViewModel自己
+0

我会试试这个:D – Sulby

+0

@ FireFly3000:那太棒了!此外,我会建议重新命名你的问题是自我描述性的,而不是这种普遍化 – sll

+0

我可以让你描述步骤2和3多一点吗? – Sulby

相关问题