WPF DataGrid Binding DataGridCell Content - PullRequest
4 голосов
/ 17 августа 2010

Надеюсь, это будет очень простой ответ, я просто не вижу пресловутый лес для деревьев.

У меня есть стиль 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, которая не сработала!

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

Заранее спасибо!

Пит

1 Ответ

6 голосов
/ 17 августа 2010

Если столбец является 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 - это свойство объекта строки, имеющего путь к изображению.

...