将 DataGrid 绑定到 ObservableCollection<Tuple<bool, string>>



我想将ObservableCollection<Tuple<bool, string>>绑定到 WPF 中的 DataGrid。

XAML 代码片段:

<DataGrid Name="AvailableApps" Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,30,5,5" ColumnWidth="*" CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False" CanUserSortColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Application" Binding="{Binding Item2}"/>
<DataGridCheckBoxColumn Header="Selection" Binding="{Binding Item1}"/>
</DataGrid.Columns>
</DataGrid>

C# 代码片段:

AvailableApps.ItemsSource = Applications;
AvailableApps.IsReadOnly = false;
AvailableApps.Columns[0].IsReadOnly = true;

当我使用此代码运行应用程序时,我收到一个异常,指出双向或单向绑定不适用于类型为"System.Tuple'2[System.Boolean,System.String]"的"Item1"的只读属性。

我怎样才能用ObservableCollection<Tuple<bool, string>>做到这一点?

Tuple<T1, T2>是不可变的,因此无论是否使用DataGrid,您都无法设置其Item1属性。

因此,如果您希望能够更改DataGrid中的值,则应将源集合的类型从ObservableCollection<Tuple<bool, string>>更改为ObservableCollection<YourClass>其中YourClass是具有公共可设置Item1属性(或任何您选择调用它(的类。

最新更新