WPF - 显示ObservableCollection

时间:2016-09-29 11:35:17

标签: c# wpf xaml mvvm

如何使用XAML实现以下要求?

要求

想开发一个GUI,显示一个公告“ticker”,其中包含以下要求:

  • viewmodel包含公告列表。
  • 一次只能显示一个公告。
  • n 秒后,公告文本应由下一个
  • 替换
  • 最后,循环应该从第一个项目开始。
  • 文本本身不应连续移动(滚动)或以其他方式设置动画。
  • 理想情况下,当切换到下一个公告时,轻微的动画应该可视化过渡。

简化的ViewModel

class Announcement
{
  public string Title { get; set; }
}

class HomeViewModel
{
  public ObservableCollection<Announcement> Announcements {get;}
}

考虑选项1:在Viewmodel中进行硬编码

我考虑了以下实施选项:

  • 在ViewModel中添加另一个属性VisibleAnnouncement
  • 通过计时器
  • 定期更新
  • 将TextBlock直接绑定到此属性

但是我认为这个属性是冗余的,并且希望重用现有的集合并直接在XAML中定义转换,因为这是给定View的特定属性。但我无法找到任何关于如何使用XAML构建它的资源。我在网上找到的股票代码组件通常使用某种字幕文本或连续滚动。

1 个答案:

答案 0 :(得分:1)

您的&#34;认为选项1&#34;是正确的方法。 ViewModel是多余的,这没关系。您正在使用引用,因此只有32/64位才能保存&#34;冗余&#34;。

另一个选择是在你现在的位置设置某种计数器。但是,您还需要另一个返回Announcements.ElementAt(计数器)的get属性,以便将View绑定到ViewModel。所以这真的没有特色。

您应该使用选项1。