РЕДАКТИРОВАТЬ: было отмечено, что все шаблоны управления по умолчанию доступны на MSDN , что делает нижеприведенное значение, но я оставлю это здесь для интереса.
При наличии экземпляра элемента управления вы получаете сериализацию разметки для шаблона элемента управления с использованием класса System.Windows.Markup.XamlWriter
.
Чтобы получить шаблон управления:
string markup = System.Windows.Markup.XamlWriter.Save(control.Template);
Чтобы получить полный дамп (включая триггеры и т. Д.) Шаблона управления, используйте.
StringBuilder markupBuilder = new StringBuilder();
XmlWriter writer = XmlWriter.Create(markupBuilder);
System.Windows.Markup.XamlDesignerSerializationManager manager =
new System.Windows.Markup.XamlDesignerSerializationManager(writer);
manager.XamlWriterMode = System.Windows.Markup.XamlWriterMode.Value;
// data grid named dataGrid1
var template = dataGrid1.Template;
System.Windows.Markup.XamlWriter.Save(dataGrid1.Template, manager);
string markup = markupBuilder.ToString();
Если вы просто хотите изменить цвет переднего плана DataGrid, когда он отключен, вы сможете использовать стили вместе с триггерами, а не заменять весь шаблон.
<DataGrid>
<DataGrid.Resources>
<Style
TargetType="{x:Type DataGridColumnHeader}">
<Style.Triggers>
<DataTrigger
Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Value="False">
<Setter
Property="Foreground"
Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style
TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger
Binding="{Binding IsEnabled, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
Value="False">
<Setter
Property="Foreground"
Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<!-- Column Definitions -->
</DataGrid>
Добавление двух вышеуказанных стилей к коллекции ресурсов DataGrid приведет к тому, что передний план каждого заголовка столбца и ячейки строки данных станет зеленым, когда DataGrid отключен.