c# - 如何从第二个窗口访问一个窗口内容

标签 c# wpf mvvm .net-4.0 timer

我需要制作一个有两个窗口的应用程序:

窗口 1
包含 6 个倒数计时器。

窗口 2
此处将设置各个计时器的设置。

此功能的最佳解决方案是什么?我将使用 c# wpf 和 .Net 4.0

最佳答案

MVVM

1. 倒计时 View
表示单个计时器 View ,简单的 TextBlock 绑定(bind)到 CurrentValue属性或更漂亮/复杂的东西,而不是 TextBlock

2. 倒计时 View 模型
表示单个计时器本身,公开属性 int CurrentValue在 View 上显示为倒计时数字。要实现倒计时,您可以使用 Sytem.Timers.TimerElapsed event处理程序只是减少 CurrentValue 属性值

3. TimersView - 用于具有 6 个计时器的第一个窗口

  • ItemsCountrol/ListView,
  • ItemTemplate - CountDownView
  • ItemsSource - 绑定(bind)到 Timers TimersViewModel 的属性(property),基本上 TimersViewModel 应该设置为 TimersView 的 DataContext 以便您可以指定以下绑定(bind):(并且每个项目都将绑定(bind)到单个 Timer)
    <ListView ItemsSource="{Binding Timers}" ... />

  • 4. TimersViewModel - 公开 IEnumerable<CountDownViewModel> Timers属性(property)

    5. SettingsView - 设置面板

    PS:INotifyPropertyChanged 用于暴露给 View 的所有 VM 属性

    你的功课 :
  • 了解 MVVM 原理、WPF 绑定(bind)和命令,这将对您的整个职业生涯有所帮助
  • 自己实现 TimersViewModel 和 SettingsViewModel 的关系
  • 关于c# - 如何从第二个窗口访问一个窗口内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966715/

    相关文章:

    c# - 将 ViewModel 传递给 UserControl

    mvvm - 使用 MVVM 模式在 Telerik RadGridView 中查找选定项目

    c# - 输入类型在 lambda 表达式中自动更改

    c# - ObservableCollection 属性类

    c# - 如何在 XmlTextWriter 中使用 CR 而不是 CRLF 生成 XML

    wpf - WPF 应用程序中的 IIS 平滑流式处理

    c# - 将触发器值传递给 Wpf 应用程序

    WPF,滚动条拇指向后显示

    c# - 在 MonoDevelop 中使用带有官方 C# 驱动程序的 GridFS

    c# - 编码我的字符串以通过 C# 发送 http 请求