首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当填充数据时,数据库会导致页面上的其他功能不能工作

当填充数据时,数据库会导致页面上的其他功能不能工作
EN

Stack Overflow用户
提问于 2016-01-12 13:56:40
回答 3查看 48关注 0票数 0

在我的视野里我有一个数据。属性的绑定如下

代码语言:javascript
复制
ItemsSource="{Binding}"

另外,在代码背后,我通过执行以下操作设置了数据文本:

代码语言:javascript
复制
DataContext = ProcedureDatabaseViewModel.Procedures();

视图模型中的过程函数成功地输出了DataGrid成功显示的列表。

现在的问题是,整个页面的数据文本现在被设置为上面的内容。其结果是与VM交互的其他元素不再工作。例如,带有VM中的命令的按钮。我尝试移除后面代码中数据文本的设置,但不知道如何填充数据集。请注意,当在上下文后面的代码中没有设置DataContext时,我相信会将其更改为VM,因此,其他元素将重新开始工作。我尝试将Itemssource属性更改为目标对象列表,这些对象是我希望填充数据集的对象,但它没有工作。

清单是

代码语言:javascript
复制
List<procedure> Procedures

而且它在ProdureDatabaseViewModel中。我试着把它当作

代码语言:javascript
复制
ItemsSource="{Binding ProdureDatabaseViewModel.Procedures}"

但这种做法也没有奏效。

有人能告诉我正确的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-12 14:33:46

最干净的方法是使用ItemsSource将过程集合绑定到DataGrid。要使其工作,程序必须是一个属性。若要避免进一步的问题,请使用ObservableCollection。它应该是这样的:

代码语言:javascript
复制
ObservableCollection<procedure> Procedures { get; set; }

那么您应该能够简单地将其绑定到

代码语言:javascript
复制
ItemsSource="{Binding Procedures}"
票数 1
EN

Stack Overflow用户

发布于 2016-01-12 14:29:55

我更喜欢将视图构造函数中的DataContext设置为完整的ViewModel (我为这个特殊视图创建的)。

所以我在视图的构造函数中做了这样的事情:

代码语言:javascript
复制
public View(ProcedureDatabaseViewModel viewModel)
{
    this.DataContext = viewModel;
}

这样,其他的一切都应该仍然有效,你可以使用的不仅仅是程序。

接下来,将这些过程绑定到数据集:

ItemsSource="{Binding ProcedureList}"

请注意,要使其工作,“过程”必须是一个属性。您的问题中不清楚它是函数、属性还是简单的类成员。如果它是一个函数,您可以在视图模型中这样做:

代码语言:javascript
复制
public List<procedure> ProcedureList
{
    get { return this.Procedures(); }
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-12 14:43:09

我尝试移除后面代码中数据文本的设置,但不知道如何填充数据集。

您可以像这样分别设置DataContext的DataGrid,MyDataGrid.DataContext = ProcedureDatabaseViewModel.Procedures();

并为您的DataContext应用单独的Page

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34745615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档