【问题标题】:How can I apply a custom TextBox style to built-in controls?如何将自定义 TextBox 样式应用于内置控件?
【发布时间】:2012-11-16 00:53:26
【问题描述】:

背景:

在标准 WPF 应用程序中,右键单击 TextBox 会显示一个 ContextMenu,其中包含三个命令:剪切、复制和粘贴。我的愿望是向我的应用程序中的所有 TextBox ContextMenus 添加一个全选命令。

问题:

我的标准方法是创建一个以 TextBox 为目标并提供新 ContextMenu 的样式。这样,所有 TextBox 控件都会继承样式并接受更改。

问题是我的样式没有被包含文本框的控件继承。例如,在编辑 DataGridTextColumn 单元格时,我知道使用了 TextBox,但它不继承我的样式。我的应用程序使用的一些第 3 方控件也是如此。

问题:

是否有其他方法可以让控件(如 DataGridTextColumn 的单元格)获取我的样式更改,或者我是否坚持更改他们的模板?

附录:

这是风格:

<Style 
    TargetType="{x:Type TextBox}"
    BasedOn="{StaticResource {x:Type TextBox}}"
    >
    <Setter
        Property="ContextMenu"
        >
        <Setter.Value>
            <ContextMenu>
                <MenuItem
                    Header="Cu_t"
                    Command="ApplicationCommands.Cut"
                    InputGestureText="Ctrl+X"
                    />
                <MenuItem
                    Header="_Copy"
                    Command="ApplicationCommands.Copy"
                    InputGestureText="Ctrl+C"
                    />
                <MenuItem
                    Header="_Paste"
                    Command="ApplicationCommands.Paste"
                    InputGestureText="Ctrl+V"
                    />
                <Separator
                    />
                <MenuItem
                    Header="Select _All"
                    Command="ApplicationCommands.SelectAll"
                    InputGestureText="Ctrl+A"
                    />
            </ContextMenu>
        </Setter.Value>
    </Setter>
</Style>

【问题讨论】:

    标签: c# .net wpf xaml textbox


    【解决方案1】:

    您的文本框样式将反映到未应用任何样式的文本框。因此,如果您有任何第三方文本框并且它已经应用了键样式。你的风格会失败。您可能需要使用表达式混合来打开控件模板并更改样式或了解文本框样式如何应用在那里。

    干杯..

    【讨论】:

    • 不幸的是,您似乎是对的。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2019-10-18
    • 1970-01-01
    • 2012-10-16
    • 2017-02-20
    • 2019-12-17
    相关资源
    最近更新 更多