WPFツールバーのオーバーフローボタンの色 -- .net フィールド と wpf フィールド と button フィールド と overflow フィールド と toolbar フィールド 関連 問題

Color of OverFlowButton in WPF toolbar












1
vote

問題

日本語

問題があった。 WPFツールバーの背景色を右隅にあるWPFツールバーのオーバーフローボタンを変更すると色が変わりません。 。

例: Alt Text http://biztimes.ru/toolbar.jpg

英語

There was a problem. When I change the background color of WPF toolbar Overflow Button in the right corner does not change color. How to fix it?

Example: alt text http://biztimes.ru/toolbar.jpg

</div
              
 
 

回答リスト

4
 
vote
vote
ベストアンサー
 

オーバーフローボタン残念ながら、バックグラウンドが固定されています。より正確には、デフォルトのテンプレートの静的値に設定されています。 このMSDNフォーラムスレッドまたは msdn コピーを取得したい場合彼ら。または Chrisからこのツール

テンプレートでは、オーバーフローパネルを表示/非表示にするために使用されるToggleButtonが表示されます。これはあなたが探している効果を持つように変更するものです。

だから、あなたの質問に対する答えはあなたがあなたのXAMLにツールバーのフルスタイルを含め、ツールバーの残りの部分と同じになるようにボタンの背景を変更する必要があることです。

 

The overflow button unfortunately has a fixed background. More precisely, it is set to a static value in the default template. See this MSDN forum thread or MSDN if you want to get a copy of them. Or This tool from Chris Sells

In the template, you'll see a ToggleButton, that is used to show/hide the overflow panel. This is the one to change to have the effect that you are looking for.

So, the answer to your question is that you need to include the full style of the toolbar in your XAML and change the background of the button to be the same as the rest of the toolbar.

</div
 
 
2
 
vote

私はあなたが上記したのと同じ問題を抱えていました。私の解決策は次のとおりです。

<事前> <コード> using System.Windows.Controls.Primitives; using System.Windows.Media; namespace WPF.Controls { public class ToolBar : System.Windows.Controls.ToolBar { public override void OnApplyTemplate() { base.OnApplyTemplate(); var overflowPanel = base.GetTemplateChild("PART_ToolBarOverflowPanel") as ToolBarOverflowPanel; if (overflowPanel != null) { overflowPanel.Background = OverflowPanelBackground ?? Background; overflowPanel.Margin = new Thickness(0); } } public Brush OverflowPanelBackground { get; set; } } }

XAMLサンプル:

<事前> <コード> <Window x:Class="WPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:src="clr-namespace:WPF.Controls"> <ToolBarTray Background="White"> <wpf:ToolBar Background="Pink" OverflowPanelBackground="Peru" Band="1" BandIndex="1" Width="50"> <Button Content="Cut" /> <Button Content="Copy" /> <Button Content="Paste" /> </wpf:ToolBar> <wpf:ToolBar Background="Aqua" Band="2" BandIndex="1" Width="70"> <Button Content="Undo" /> <Button Content="Redo" /> </wpf:ToolBar> <wpf:ToolBar OverflowPanelBackground="Yellow" Band="2" BandIndex="2" Width="100"> <Button Content="Paint"/> <Button Content="Spell"/> <Separator/> <Button Content="Save"/> <Button Content="Open"/> </wpf:ToolBar> </ToolBarTray> </Window>
 

I had the same problem you described above. My solution is the following:

using System.Windows.Controls.Primitives; using System.Windows.Media;  namespace WPF.Controls {     public class ToolBar : System.Windows.Controls.ToolBar     {         public override void OnApplyTemplate()         {             base.OnApplyTemplate();              var overflowPanel = base.GetTemplateChild("PART_ToolBarOverflowPanel") as ToolBarOverflowPanel;             if (overflowPanel != null)             {                 overflowPanel.Background = OverflowPanelBackground ?? Background;                 overflowPanel.Margin = new Thickness(0);             }         }          public Brush OverflowPanelBackground         {             get;             set;         }     } } 

XAML sample:

<Window     x:Class="WPF.MainWindow"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:src="clr-namespace:WPF.Controls">  <ToolBarTray Background="White">     <wpf:ToolBar Background="Pink" OverflowPanelBackground="Peru" Band="1" BandIndex="1" Width="50">         <Button Content="Cut" />         <Button Content="Copy" />         <Button Content="Paste" />     </wpf:ToolBar>     <wpf:ToolBar Background="Aqua" Band="2" BandIndex="1" Width="70">         <Button Content="Undo" />         <Button Content="Redo" />     </wpf:ToolBar>     <wpf:ToolBar OverflowPanelBackground="Yellow" Band="2" BandIndex="2" Width="100">         <Button Content="Paint"/>         <Button Content="Spell"/>         <Separator/>         <Button Content="Save"/>         <Button Content="Open"/>     </wpf:ToolBar> </ToolBarTray>  </Window> 
</div
 
 
 
 
0
 
vote

アレックスの答えは良いです。オーバーフローボタンとオーバーフローパネルの色を変更するもう1つの方法は、ロードされたイベントでそれらを変更することです。

xaml

<事前> <コード> <ToolBar Loaded="ToolBar_Loaded">

後ろのコード:

<事前> <コード> private void ToolBar_Loaded(object sender, RoutedEventArgs e) { ToolBar toolBar = sender as ToolBar; var overflowGrid = toolBar.Template.FindName("OverflowGrid", toolBar) as Grid; if (overflowGrid != null) { overflowGrid.Background = Brushes.Red; } var overflowButton = toolBar.Template.FindName("OverflowButton", toolBar) as ToggleButton; if (overflowButton != null) { overflowButton.Background = Brushes.Red; } var overflowPanel = toolBar.Template.FindName("PART_ToolBarOverflowPanel", toolBar) as ToolBarOverflowPanel; if (overflowPanel != null) { overflowPanel.Background = Brushes.Red; } }

名前(OverflowGrid、OverflowButton、およびPart_ToolBaroverflowPanel)は、デフォルトのコントロールテンプレートにあります。これはWPFのGitHubページからダウンロードできます。

 

Alex's answer is good. Another way to modify the color of the OverflowButton and OverflowPanel is to modify them in the loaded event.

XAML

<ToolBar Loaded="ToolBar_Loaded"> 

Code behind:

private void ToolBar_Loaded(object sender, RoutedEventArgs e) {     ToolBar toolBar = sender as ToolBar;     var overflowGrid = toolBar.Template.FindName("OverflowGrid", toolBar) as Grid;     if (overflowGrid != null)     {         overflowGrid.Background = Brushes.Red;     }      var overflowButton = toolBar.Template.FindName("OverflowButton", toolBar) as ToggleButton;     if (overflowButton != null)     {         overflowButton.Background = Brushes.Red;     }      var overflowPanel = toolBar.Template.FindName("PART_ToolBarOverflowPanel", toolBar) as ToolBarOverflowPanel;     if (overflowPanel != null)     {         overflowPanel.Background = Brushes.Red;     } } 

The names (OverflowGrid, OverflowButton, and PART_ToolBarOverflowPanel) can be found in the default control template, which could be downloaded from WPF's GitHub page.

</div
 
 

関連する質問

0  Macツールバースタイル  ( Mac toolbar style ) 
誰もが「Xcode Organizer」のトップバーのようなツールバーを作る方法を知っていますか? さまざまなアイテムを押すと、さまざまなビューが下に表示されます。 ツールバースタイルがありますがタブバー機能、多くのMacアプリの設定ペインを使用しています。 ...

0  Excel 2007フローティングフォーマットツールバーのカスタマイズ  ( Excel 2007 floating format toolbar customisation ) 
Excel 2007では、セルを右クリックしたときに表示されているフローティングフォーマットバーをカスタマイズしますか?混乱を避けるために、私は「セル」コマンドバーメニューを意味しないが、フォーマットボタンを持つ2番目のフローティングツールバー。 e.g。...

3  完了したボタンが働いているUIPickerview  ( Uipickerview with done button not working ) 
ツールバーを使用したピッカービュー、作成されたボタンを表示します。 On Click Condingボタンでは機能していません。 ピッカービューを上にスクロールします。 [完了]ボタンをクリックします。 <事前> <コード> -(void)createPick...

6  ボタンをツールバーに配置すると、WPF:ボタンニーモニックが機能しない  ( Wpf button mnemonic does not work if placing the button in a toolbar ) 
def postMessage() { if (params.message != "") { def thisUser = lookUpUser() def thisRoom = thisUser.joinedRoom def c...

8  特定のフラグメントのためのツールバーの標高を削除します  ( Remove toolbar elevation for specific fragment ) 
標高を0に設定するにはどうすればよいです。 NavigationDrawer の特定のフラグメントに対してそれを無効にできますか?プログラム的にまたはテーマで多分? <コード> toolbar.setElevation(0) が機能していないようです。 これ...

0  ツールバーボタンを削除するAndroidをパディングします  ( Remove toolbar button padding android ) 
ボタンに追加のパディングを取り除くことによって、ツールバーにもっとボタンを収納しようとしていますが、それを行う方法はありませんでした。 私は赤でパディングを取り除こうとしています。 これをマニフェストに追加してみました <事前> <コード> <item ...

3  HTML <a name="#ref ul f.prefe.ref>タグ  ( Html a name ref tag with spacer before ) 
私は、ユーザーが常にページ上で垂直にスクロールする場所に常に表示されていない上に固定ツールバーを持つページを持っています。そのツールバーは約40pxの高さです。 私は、 <a href="#ref> タグを使用してページの特定の部分を指すようにそのページに目次...

3  キーボードショートカットを使用したSWTアクション...それらをメニューに追加する必要なし  ( Swt actions with keyboard shortcuts without having to add them to the menu ) 
現在、MenubarsやToolbarsに追加される単一のコマンドをバインドし、これらのコマンドのキーボードショートカットをバインドするのは良い方法であるため、多くのSWTアクションを実装しました。 今...メニューバーに追加することなく、プレーンSWT / ...

-1  テキスト付きツールバー  ( Toolbar with text ) 
テキスト「App de Prueba」とメニューアイコンを搭載したツールバーがありますが、アプリ名が左側にある、どのようにアプリ名を削除するには? ありがとう! ...

1  Sencha Touch:ボタンを右に合わせ、パネルの水平方向にテキスト中心を合わせる  ( Sencha touch align the button to the right and the text center horizontally of ) 
右に揃った唯一のボタンを持つパネルを持ちたいです。私は 'Spacer'のアイデアを知っています。しかしさらに、HTMLテキストセンターを水平に設定したいです。しかし、「スペーサー」を使ってそれは本当にうまくいきません。テキストは実際にはパネルの真ん中にありま...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有