【发布时间】:2015-03-10 00:35:12
【问题描述】:
我有以下DataGrid
<DataGrid x:Name="CommentaryGrid"
...
SelectedItem="{Binding SelectedCommentary, Mode=TwoWay}"
ItemsSource="{Binding CommentaryCollection}"
Helpers:DataGridTextSearch.SearchValue="{Binding ElementName=SearchTextBox, Path=Text, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridTextColumn Header="Event ID" IsReadOnly="True" Binding="{Binding event_id}"/>
<DataGridTextColumn Header="Team" IsReadOnly="True" Binding="{Binding team, Converter={StaticResource NullTeamToBlankStringConverter}}"/>
<DataGridTextColumn Header="Bookie" IsReadOnly="True" Binding="{Binding bookie}"/>
<DataGridTextColumn Header="Type" IsReadOnly="True" Binding="{Binding type}"/>
<DataGridTextColumn Header="Value" IsReadOnly="True" Binding="{Binding value}"/>
...
CommentaryCollection 是通过
public ObservableCollection<Taurus.Commentary> CommentaryCollection { ... }
我不仅需要显示对象的Taurus.Commentary.team 属性,还需要首先测试另一个属性的条件(使用我的NullTeamToBlankStringConverter)。所以我想将整个Taurus.Commentary 对象传递给我的列绑定。我可以将列定义更改为
<DataGridTextColumn Header="Team" IsReadOnly="True" Binding="{Binding Path=Items, ElementName=CommentaryGrid, Converter={StaticResource NullTeamToBlankStringConverter}}"/>
绑定到ItemCollection,但这不能让我测试每一行中的对象(使用我的转换器)。在使用ItemCollection 方法的转换器中,我可以转换为ItemCollection 并检查CurrentItem,但这只会给我选定的项目,因此所有行的值都相同。如何绑定到ItemSource 的整个Taurus.Commentary Item?
感谢您的宝贵时间。
【问题讨论】:
标签: c# wpf mvvm binding datagrid