prism/mvvm:将列绑定到 DataGrid
我正在使用像这样的标准 .NET DataGrid:
<DataGrid ItemsSource="{Binding Datensaetze}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="my col 1" Binding="{Binding MyCol1}"/>
<DataGridTextColumn Header="my col 2" Binding="{Binding MyCol2}"/>
<DataGridTextColumn Header="my col 3" Binding="{Binding MyCol3}"/>
</DataGrid.Columns>
</DataGrid>
这工作得很好。现在我想在 ViewModel 中定义列,而不是在 xaml 中设置固定列,我想动态生成它们。但是,如果我尝试将列绑定到任何内容,我会收到错误,说
DataGrid.Columns 是只读属性,无法绑定。
有没有办法将 DataGrid 列动态绑定到代码后面的某些内容?
I'm using a standard .NET DataGrid like this:
<DataGrid ItemsSource="{Binding Datensaetze}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="my col 1" Binding="{Binding MyCol1}"/>
<DataGridTextColumn Header="my col 2" Binding="{Binding MyCol2}"/>
<DataGridTextColumn Header="my col 3" Binding="{Binding MyCol3}"/>
</DataGrid.Columns>
</DataGrid>
This is working nicely. Now I want to define the columns in the ViewModel, and instead of setting fixed columns in xaml I want to generate them on the fly. However, if I try to bind the Columns to anything I get an error, saying
DataGrid.Columns is a readonly property and can't be bound.
Is there a way to dynamically bind the DataGrid columns to something in code behind?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,Columns 属性是只读的,所以我们不能直接绑定到它。如果您想绑定列,那么您可以尝试使用您绑定的附加属性,这反过来会更新列。
更新
在 CollectionChanged 事件中使用变化增量。
然后您可以将 BindableColumns 属性绑定到您的 ColumnsCollection
Yes, the Columns Property is ReadOnly so we can't bind to it directly. If you want to Bind Columns then you can try to use an attached property which you bind to, which in turn updates the Columns.
Update
Using delta of changes in the CollectionChanged event.
Then you can bind the BindableColumns property to your ColumnsCollection