【问题标题】:Silverlight: ViewModel trigger function in code behindSilverlight:隐藏代码中的 ViewModel 触发功能
【发布时间】:2011-02-16 10:27:24
【问题描述】:

我的 Silverlight 应用程序和我对 MVVM 模式的使用有点问题。

在我看来,我有一个 DataGrid。 ItemsSource 通常会绑定到 ViewModel,但在我的特定情况下,我需要动态列,并且我的项目集合包含每个项目的 Dictionary,因此我没有要显示的类属性。我的解决方案是在代码隐藏中生成所有这些,因为 DataGrid 的实际设计与我的 ViewModel 无关。这是我能想到的唯一解决方案,因为这些列无法进行数据绑定。

我已经完成了所有这些工作。我的问题是我正在使用 RIA,并且视图不知道项目集合何时完成加载。我通过在视图上放置一个普通按钮来触发代码隐藏功能来尝试我的设计,但显然这种解决方案并不好。我需要我的代码隐藏函数在我的项目集合完成加载后立即运行。

我可以让我的代码隐藏监听 ViewModel 吗?

【问题讨论】:

    标签: silverlight mvvm ria


    【解决方案1】:

    我感觉你在某个地方搞砸了。

    对于您的问题,我认为您可以通过在 ViewModel 中设置一个事件来解决它。 在视图的 view_Loaded 事件中订阅该事件并在处理程序中调用代码隐藏函数。

    我建议您重新检查您的设计,看看这是否真的有必要。

    【讨论】:

      【解决方案2】:

      我明白你的意思,我们曾经不得不做同样的事情来生成随机列,这是 silverlight 中的 PIA,因为你需要某种具有动态属性集的对象。

      我看到您找到了 Dictionary 解决方案。我的建议是,这本身并不是最干净的解决方案,但它更干净,然后将这些东西放在后面的代码中,就是将它添加到转换器中。然后将集合绑定到 itemscontrol 的 itemssource,然后当 list propertychanged 引发时,您在转换器中组装数据网格。

      小例子:

      <ItemsControl Grid.Row="1" ItemsSource="{Binding theListOfEntities, Converter={StaticResource theconverter}}"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-09
        相关资源
        最近更新 更多