SystemResourceKey 引用的 WPF 视图样式

WPF View Styles Referenced By SystemResourceKey

我正在尝试复制 DataGridComboBoxColumn's TextBlockComboBoxStyle。这是 DataGridComboBoxColumn 在未编辑列的单元格时使用的控件。通过查看 referencesource.microsoft.com 的源代码,我能够找到有关此控件的信息(我会尝试 link 直接访问有问题的类型,但我工作笔记本电脑上的浏览器有一个安全插件,可以破坏 URL ).这是来自该来源的片段:

    internal class TextBlockComboBox : ComboBox
    {
        static TextBlockComboBox()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(TextBlockComboBox), new FrameworkPropertyMetadata(DataGridComboBoxColumn.TextBlockComboBoxStyleKey));
            KeyboardNavigation.IsTabStopProperty.OverrideMetadata(typeof(TextBlockComboBox), new FrameworkPropertyMetadata(false));
        }
    }

    /// <summary>
    ///     Style key for TextBlockComboBox
    /// </summary>
    public static ComponentResourceKey TextBlockComboBoxStyleKey
    {
        get
        {
            return SystemResourceKey.DataGridComboBoxColumnTextBlockComboBoxStyleKey;
        }
    }

从该代码片段中,您可以看到此控件的 StyleSystemResourceKey.DataGridComboBoxColumnTextBlockComboBoxStyleKey 中定义了它的键。我想复制这个 Style 以便在我自己的代码库中进行添加和修改。但是,我似乎找不到此键所指的 Style 。我尝试复制控件(因为它是内部类型)并使用 Visual Studio Designer 的编辑模板功能来获取 Style/Template 的生成副本,但我得到的只是默认值 ComboBox Template。从那里开始,我尝试简单地使用此默认值 ComboBox Style 并尝试修改它,直到它类似于 TextBlockComboBoxStyle,但这只会导致问题。

有谁知道如何确定 Style 中为键 SystemResourceKey.DataGridComboBoxColumnTextBlockComboBoxStyleKey 定义的内容?

在 Windows 8 及更高版本的 PresentationFramework.Aero2.dll 中是这样定义的:

<Style x:Key="{x:Static DataGridComboBoxColumn.TextBlockComboBoxStyleKey}" TargetType="{x:Type ComboBox}">
    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ComboBox}">
                <ContentPresenter Margin="1,1,1,1" Content="{TemplateBinding ComboBox.SelectionBoxItem}"
                            ContentTemplate="{TemplateBinding ComboBox.SelectionBoxItemTemplate}"
                            ContentTemplateSelector="{TemplateBinding ItemsControl.ItemTemplateSelector}"
                            ContentStringFormat="{TemplateBinding ComboBox.SelectionBoxItemStringFormat}"
                            VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                            HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                            SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" IsHitTestVisible="false"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>