我正在计划一个WPF应用程序,它将在viewmodel中构建带有文本块的动态网格,然后使用新网格刷新接口(xaml)。
我已经完成了第一步,但是我有问题用新网格刷新视图。
是否有任何关于如何将网格绑定到xaml的示例代码,我可以查看一下?我真的无法弄清楚这一点!
由于
答案 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列表,在哪种情况下,模板不会被应用(听起来就是这种情况)。