Как связать TextBlock.Text в шаблоне DataGridCell, используя ItemsSource - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу иметь DataGridCell с текстом и изображением.
В настоящее время мой код выглядит так

XAML:

<DataGrid Name="myDataGrid" CellStyle="{StaticResource myCellStyle}" />

Стиль:

<Style x:Key="myCellStyle" TargetType="DataGridCell">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding}"/>
                    <Image/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

C #:

myDataGrid.ItemsSource = myDataTable.DefaultView;

Вопрос :
Как связать текст с TextBlock, используя ItemsSource?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы должны сделать пару вещей, чтобы исправить это

Сначала установите для AutoGenerateColumns значение true

<DataGrid CellStyle="{StaticResource myCellStyle}" AutoGenerateColumns="True">

Следующая в вашем стиле ячейки

<Style x:Key="myCellStyle" TargetType="DataGridCell">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                        Path=Content.Text}"/>
                    <Image/>
                </StackPanel>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Надеюсь, это поможет.

0 голосов
/ 14 ноября 2018

Предполагается, что myDataTable.DefaultView - это список некоторых объектов (экземпляров классов).

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

Таким образом, если взять из вашего примера шаблона, если он связан с гипотетическим списком классов лиц с FirstName и LastName на экземпляре класса, можно установить привязку шаблона к использованию этих свойств для каждогострока такая:

 <StackPanel Orientation="Horizontal">
       <TextBlock Text="{Binding FirstName}"/>
       <TextBlock Text="{Binding LastName}"/>
       <Image/>
  </StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...