Я не соглашаюсь с "ageektrapped"... с помощью метода частичного класса, не хорошая практика. Какова была бы цель разделить Словарь от страницы тогда?
От кода - позади, можно получить доступ к x:Name элементу при помощи:
Button myButton = this.GetTemplateChild("ButtonName") as Button;
if(myButton != null){
...
}
можно сделать это в методе OnApplyTemplate, если Вы хотите к сцеплению к средствам управления, когда Ваш пользовательский элемент управления загружается. OnApplyTemplate должен быть переопределен, чтобы сделать это. Это - обычная практика и позволяет Вашему стилю оставаться разъединенным от управления. (Стиль не должен зависеть от управления, но управление должно зависеть от наличия стиля).
Понятно. Добавьте в раздел DataGrid.Resources следующее:
<DataGrid.Resources>
<Style TargetType="{x:Type dg:DataGridCell}">
<Style.Triggers>
<Trigger Property="dg:DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="#CCDAFF" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
В моем случае вышеописанное решение оставило синюю рамку вокруг каждой ячейки.
Вот решение, которое сработало для меня. Оно очень простое, просто добавьте это в DataGrid
. Вы можете изменить его с SolidColorBrush
на любой другой, например, линейный градиент.
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="#FF0000"/>
</DataGrid.Resources>