2010-08-17 3 views
4

Это, надеюсь, будет очень простым ответом, я просто не вижу пресловутого дерева для деревьев, которые, как я думаю.WPF DataGrid Binding DataGridCell Content

У меня стиль DataGridCell, в котором я хочу, чтобы связать содержимое ячейки к исходному свойству изображения, вот XAML я использую в данный момент:

<Style x:Key="DataGridImageCellStyle" TargetType="{x:Type toolkit:DataGridCell}"> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="BorderBrush" Value="Transparent" /> 
    <Setter Property="BorderThickness" Value="1" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type toolkit:DataGridCell}"> 
       <Border Background="Transparent" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="0" 
       SnapsToDevicePixels="True"> 
        <Image Source="{Binding RelativeSource={RelativeSource AncestorType=toolkit:DataGridCell}, Path=Content}" /> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Заметим, что на данный момент я привязываю источник изображения к контенту .., который не работает, я также попытался Value, который не сработал!

Итак, мой вопрос, приятный и простой .. Какая правильная привязка используется для получения содержимого ячейки в исходном свойстве этого изображения?

Заранее благодарен!

Пит

ответ

6

Если столбец является DataGridTextColumn, то вы могли бы привязать к Text свойство TextBlock, который является его содержание:

<Image Source="{Binding RelativeSource= 
    {RelativeSource AncestorType=DataGridCell}, Path=Content.Text}" /> 

Это действительно хак, хотя. Если вы хотите, чтобы отобразить изображение в столбце, вы, вероятно, следует использовать DataGridTemplateColumn:

<DataGridTemplateColumn Header="..."> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Image Source="{Binding SomeProperty}"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

Где SomeProperty это свойство вашего объекта строки, который имеет путь к изображению.

+0

Спасибо за ответ, я в конечном итоге выбрал взломать, чтобы не упустить в нем больше времени! из любопытства ... если бы я использовал DataGridTemplateColumn, что бы вы ожидали, что путь привязки должен быть указан, связанный с ячейкой в ​​ячейке DataTableRow? еще раз спасибо! – GreatSeaSpider

+0

@GreatSeaSpider: Я думаю, что когда вы привязываетесь к DataTable, вы используете значения DataColumn.ColumnName как путь привязки. – Quartermeister

Смежные вопросы