c# - 使用基于 ReactiveUI C# 的绑定绑定到 DataGridColumn
问题描述
我正在学习在 WPF 中使用 ReactiveUI。我有一个应用程序,它有一个绑定到 DataGrid 的 IObservableCollection。
<DataGrid Grid.Row="3" Grid.ColumnSpan="2" AutoGenerateColumns="False" ScrollViewer.VerticalScrollBarVisibility="Visible" x:Name="validationResults" HorizontalAlignment="Stretch" IsReadOnly="True" SelectionMode="Extended" SelectionUnit="Cell">
<DataGrid.Columns>
<DataGridTextColumn Header="Item Id" x:Name="vrContractID" Binding="{Binding Path=ItemId, Mode=OneWay}" MinWidth="50" />
<DataGridTextColumn Header="Item #" Binding="{Binding Path=ItemNumber, Mode=OneWay}" MinWidth="50"/>
<DataGridCheckBoxColumn Header="Valid?" Binding="{Binding Path=IsValid, Mode=OneWay}" MinWidth="5"/>
<DataGridTextColumn Header="Error Code" Binding="{Binding Path=ErrorCode, Mode=OneWay}" MinWidth="50"/>
<DataGridTextColumn Header="Error Message" Binding="{Binding Path=ErrorMessage, Mode=OneWay}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
我试图不使用基于 XAML 的绑定,就像我在上面向您展示的那样,但是,我在理解如何使用以下代码在文件后面的代码中完成这种绑定样式时遇到问题:
this.Bind()
或这个:
this.OneWayBind()
我在绑定 DataTemplates 和 MultiBinding 时遇到过类似的问题,这让我想知道 ReactiveUI/MVVM 的设计模式是否缺少一些东西。
任何帮助,将不胜感激。
PS:如果我必须使用 xaml 绑定来绑定它 - 为什么我不能在 xaml 中完成所有绑定?有两个可以发生绑定的地方感觉有点奇怪。
解决方案
使用 DataTemplates 的解决方案是不设置一个,rxui 绑定将自动提供一个并查找已IViewFor<TViewModel>
注册的视图模型并显示该视图。
您可以Observable.CombineLatest
与多个WhenAny
运算符一起使用多重绑定,然后使用BindTo
.
使用数据网格的故事是您可以以编程方式生成列,然后在这些列上使用 rxui 绑定。在过去,我使用了构建器模式。开箱即用的 DataGrid 与 rxui 绑定并不容易。
推荐阅读
- javascript - messages.onMessage().then(function(payload) 中的有效负载未从 fcm angularjs(1.6) 定义
- asp.net - 外部身份提供者服务中的用户和本地数据库表之间的关系
- c# - 在 .Net 核心中对 BackgroundService 进行单元测试时要断言或验证的内容
- reactjs - 如何在自定义钩子函数中访问 useReducer 的新状态
- sql - 在条件较慢的地方选择
- excel - VBA在具有数据的列中查找匹配对
- javascript - 使用 Typescript 时无法控制台登录简写箭头功能
- excel - Excel中的Datedif和If语句
- javascript - 反应组件中重复的 onInput 处理程序
- python - 如何根据 QScrollArea 内的子内容自动调整 QVBoxLayout 的大小?