簡體   English   中英

如何將自定義TextBox樣式應用於內置控件?

[英]How can I apply a custom TextBox style to built-in controls?

背景:

在標准WPF應用程序中,右鍵單擊TextBox會顯示帶有三個命令的ContextMenu:剪切,復制和粘貼。 我的願望是向應用程序中的所有TextBox ContextMenus添加“全選”命令。

問題:

我的標准方法是創建一個針對TextBox的樣式,並提供新的ContextMenu。 這樣,所有TextBox控件都會繼承樣式並進行更改。

問題在於我的樣式沒有被包含TextBoxes的控件繼承。 例如,當編輯DataGridTextColumn單元格時,我知道使用了TextBox,但它不繼承我的樣式。 我的應用程序使用的某些第三方控件也是如此。

題:

還有其他方法可以使用控件,例如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>

您的文本框樣式將反映給未應用任何樣式的文本框。 因此,如果您有任何第三方文本框,並且該文本框已經具有使用鍵的樣式。 你的風格會失敗。 您可能需要使用表達式混合來打開控件模板並更改樣式,或者了解如何在其中應用文本框樣式。

干杯..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM