мой первый вопрос, так что будьте осторожны. Я несколько дней пытался в этом разобраться. Самое близкое, что у меня получилось, - это программный доступ к содержимому ячейки в коде. Есть ли способ сделать это в xaml?
Например, это не работает
<Style x:Key="ComboBox" TargetType="DataGridCell">
<Setter Property="FontSize" Value="14"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
<DataTemplate x:Key="foo">
<Border Margin="3">
<DataGrid Style="{StaticResource DGStyle}" Block.TextAlignment="Center">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="bar" SelectedItemBinding="{Binding ListofIntegers, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource fooItem}, Path=ListofBar, Mode=OneWay}" CellStyle="{StaticResource ComboBox}" TextBlock.TextAlignment="Center"/>
</DataGrid.Columns>
</DataGrid>
</Border>
</DataTemplate>
Я пробовал еще несколько вещей, так как смог центрировать заголовки и текстовые поля в столбцах текстовых полей. Однако выпадающие списки не хотят сотрудничать со мной. Кто-нибудь знает как?
Изменить: Хорошо, теперь чувствую себя глупо, играл с решением Энди и наткнулся на это
<Style x:Key="BasicComboBox" TargetType="ComboBox">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ComboBoxItem">
<!--can mess with appearance of drop down menu here-->
</Style>
</Setter.Value>
</Setter>
</Style>
<DataGridComboBoxColumn Header="Size" HeaderStyle="{StaticResource Header}" SelectedItemBinding="{Binding Size.Name, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource InsertSizes}}" EditingElementStyle="{StaticResource BasicComboBox}"/>
Можно установить стиль созданного поля со списком в EditingElementStyle.
Изменить 2: Хотя все вышесказанное работает, я думаю, что я собираюсь пойти с предложением Энди использовать столбец шаблона, поля со списком также не сливаются с сеткой, но их гораздо проще выбрать для пользователя, так как там Нет необходимости переходить в режим редактирования.
<Style TargetType="ComboBox">
и используйтеSetters
, чтобы поиграть с выравниванием. - person Jerrington   schedule 24.10.2014