DataGrid 用の Excel への汎用コンバーターを構築しようとしています。私は WPF 4.0 と DataGrid ユーザー コントロールを使用しています。このコンバーターは、このグリッド (または選択した行) からすべての値を取得し、(ファイルを保存して) Excel にエクスポートする必要があります。それは動作しますが、DataGridTemplateColumns は WPF での直接バインディングを受け入れないため、DataGridTemplateColumns に問題があります (DataGridTemplateColumns を使用して、このようにセル内にテキストと画像を表示します => [ ] "はい" - はいはText と [ ] 画像なので、1 つは TextBlock にバインドされ、もう 1 つは 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 の問題を解決しようとしています。
私の問題を説明できたことを願っています。
助けてくれてありがとう。グスタボ。