如何使用mvvm构建动态网格和绑定到xaml

时间:2010-12-15 18:27:57

标签: wpf mvvm grid

我正在计划一个WPF应用程序,它将在viewmodel中构建带有文本块的动态网格,然后使用新网格刷新接口(xaml)。

我已经完成了第一步,但是我有问题用新网格刷新视图。

是否有任何关于如何将网格绑定到xaml的示例代码,我可以查看一下?我真的无法弄清楚这一点!

由于

1 个答案:

答案 0 :(得分:1)

你可能会稍微接受这个错误,很难从问题中说出来 -

通常,要在MVVM中显示一组动态UI元素,请将ItemsControl的ItemsSource属性绑定到ObservableCollection。 ItemsControl ItemsTemplate属性将YourViewModel对象转换为UIElement,可以是TextBlock或您想要的任何样式。

以此为例:

// model
class Person
{
   public string Name {get; private set;}
}

// view model
class MainViewModel
{
  public ObservableCollection<Person> People {get; private set;}
}

//view
<UserControl DataContext="{Binding MyMainViewModelObject}">
  <ItemsControl ItemsSource="{Binding People}">
    <ItemsControl.ItemsTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Name}"/>
      </DataTemplate>/
    </ItemsControl.ItemsTemplate>
  </ItemsControl>
</UserControl>

我还没有测试过这段代码,只是为了说明。还有其他方法可以将问题解析到MVVM中,这一切都取决于具体情况。您必须提供更多详细信息,以帮助您解决这个问题。很少在WPF中需要使用代码来创建或添加UI元素到其他UIElements等。

值得注意的是,问题的确切方向是,ItemsControl可以绑定到一堆常规对象并使用它的模板从它们创建UIElements,或者它可以绑定到UIElements列表,在哪种情况下,模板不会被应用(听起来就是这种情况)。