我正在尝试为我的DataGrid构建一个通用的Excel转换器。我正在使用WPF 4.0和DataGrid用户控件。此转换器应从此网格(或其选定行)中获取所有值并导出到excel(通过保存文件)。它有效,但我在使用DataGridTemplateColumns时遇到了一些麻烦,因为DataGridTemplateColumns不接受WPF中的直接绑定(我使用DataGridTemplateColumns来显示单元格内的文本和图像,例如=>> []“是” - 是是一个Text和[]一个图像,所以它是一个绑定到TextBlock而另一个绑定到Image)。 这是DataGrid的一个示例:
<ct:DataGridExtended AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsReadOnly="True"
FrozenColumnCount="7"
Margin="-1,59,-1,25"
Grid.Column="2"
ScrollViewer.IsDeferredScrollingEnabled="True"
ct:DataGridDoubleClick.ExecuteCommand="{Binding InformacoesPeca}"
ItemsSource="{Binding Placas, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding PlacasSelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedIndex="{Binding PlacasSelectedIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ut:SelectedItemsBehavior.SelectedItemsChangedHandler="{Binding Path=ResultsSelectionChangedCommand}">
<DataGrid.Columns>
<DataGridTextColumn Header="Cone Seq. Orig."
Binding="{Binding OriginConeSeq}"
Visibility="Hidden" />
<DataGridTextColumn Header="Cone"
Binding="{Binding Cone.ConeId}" />
<DataGridTemplateColumn Header="Nec. Acomp.">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Image Source="{Binding MonitoringNeed,Converter={StaticResource YesNoInstructionImageConverter}}"
Height="16"
Width="16"
HorizontalAlignment="Left"
Margin="2,0,0,0" />
<TextBlock Text="{Binding MonitoringNeed,Converter={StaticResource NoEmptyStringConverter}}"
HorizontalAlignment="Left"
Margin="22,0,0,0" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGridExtended>
所以,使用DataGridTextColumn中的Binding从对象获取数据没有问题,但我无法弄清楚如何从DataGridTemplateColumn中获取Binding。
我已经研究了很多例子,包括StackOverflow上的一些例子(例如:Get textbox binding in wpf datagridtemplatecolumn),但我仍然被卡住了。
还有另一个问题,但我已经解决了这个问题:我只需要使用那些对用户可见的列。我解决了使用DataGridColumn的Visibility属性,然后我试图通过只获取该单元格中的值来解决该TemplateColumn问题。
我希望我能够解释我的问题。
感谢您的帮助。 古斯塔沃。