我试图复制Style
的DataGridComboBoxColumn's
TextBlockComboBox
。这是DataGridComboBoxColumn
未编辑列的单元格时使用的控件。通过查看referencesource.microsoft.com上的源代码,我能够找到有关此控件的信息(我将尝试直接链接到有问题的类型,但是我的便携式笔记本电脑上的浏览器具有一个安全插件,可操纵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;
}
}
在此代码段中,您可以看到Style
该控件的键已在中定义SystemResourceKey.DataGridComboBoxColumnTextBlockComboBoxStyleKey
。我想复制此代码Style
,以便在自己的代码库中进行添加和修改。但是,我似乎找不到Style
此键所指的。我尝试复制控件(因为它是内部类型),并使用Visual Studio Designer的“编辑模板”功能来获取的生成的副本Style/Template
,但我所得到的只是默认的ComboBox
Template
。从那里,我想简单地使用这个默认ComboBox
Style
,并试图修改它,直到它类似了Style
的TextBlockComboBox
,但是这只是造成问题。
有人知道如何确定Style
密钥中定义的内容SystemResourceKey.DataGridComboBoxColumnTextBlockComboBoxStyleKey
吗?
这是PresentationFramework.Aero2.dll
在Windows 8及更高版本上的定义:
<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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句