none
WPF リボンインターフェイスのボタンラベルを改行したい RRS feed

  • 質問

  • WPF リボンアプリケーションを開発しています。

    (Microsoft Ribbon for WPF.msi による WPF Ribbon Application)

    単純な悩みなのですが、リボン上のボタン(メニュー)のラベルを改行するやり方が分からなくて困っています。

    長めのボタンラベルはOffice2007-2010のように改行したいのですが。

    半角スペースをはさむと、英語スペルの場合はその部分で改行してくれるのですが、日本語ラベルを設定した場合は意図した位置でない箇所で改行されてしまいます。

    どなたか、ご存知であれば教えてください。 

     

    2011年5月19日 14:45

回答

  • 
を使われてみてはいかがでしょうか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年6月24日 5:46
    2011年5月21日 0:18
    モデレータ
  • LineBreak  を使われてみてはいかがでしょうか?

    http://d.hatena.ne.jp/hilapon/20110307/1299485593


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク 山本春海 2011年6月24日 5:45
    2011年5月19日 15:47
    モデレータ
  • Microsoft Ribbon for WPF をインストールして調べてみました。なるほど、RibbonButtonLabel プロパティに設定するのですね。しかもこのプロパティ、Sytem::String しか設定できないようです。

    で、試してみたのですが、まず XAML なら以下で可能です。

    <my:RibbonButton Label="おはよううさぎ&#10;さよならいおん&#10;こんばんわに" />

    またコードビハインドなら、\n で改行可能でした。

    this.ribbonButton.Label = "おはよううさぎ\nさよならいおん\nこんばんわに";

    以上、参考になりますでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク 山本春海 2011年6月24日 5:46
    2011年5月25日 1:43
    モデレータ

すべての返信

  • LineBreak  を使われてみてはいかがでしょうか?

    http://d.hatena.ne.jp/hilapon/20110307/1299485593


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク 山本春海 2011年6月24日 5:45
    2011年5月19日 15:47
    モデレータ
  • LineBreak を使うのですね。ありがとうございます。

    説明不足で申し訳なかったのですが、ボタンラベルはリソースファイルから読み込むようにしています。(多国語対応のため)

    リソースファイル内で改行指示ができたらいいのですが、無理であれば上段要素と下段要素に分けて、

    XAML側で LineBreak によって改行するということですね。

    2011年5月21日 0:04
  • &#10;を使われてみてはいかがでしょうか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年6月24日 5:46
    2011年5月21日 0:18
    モデレータ
  • 返信が遅くなり申し訳ありません。 残念ながら もだめでした。そのまま表示されてしまいました。
    2011年5月24日 7:02
  • リソースはどこで定義されてますか? Window のリソースなら

    <Window.Resources>
    	<TextBlock x:Key="labelCaption" 
    		Text="おはよううさぎ&#10;さよならいおん&#10;こんばんわに" />
    </Window.Resources>
    ・・・・・・
    <Button Content="{StaticResource labelCaption}" >
    

     

    で改行表示されます。
    また、外部のリソースXAML に

    <ResourceDictionary 
    	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    	<TextBlock x:Key="labelCaption" Text="おはよううさぎ&#10;さよならいおん&#10;こんばんわに" />
    </ResourceDictionary>
    

     

    上記のように定義した場合でも

    <Window.Resources>
    	<ResourceDictionary Source="Dictionary1.xaml"/>
    </Window.Resources>
    ・・・・・・
    <Button Content="{StaticResource labelCaption}" >
    

     

    で改行されて表示されると思うのですが・・・


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2011年5月24日 8:33
    モデレータ
  • > リソースはどこで定義されてますか?

    あ、すみません。「リソースファイルから読み込む・・・」 と書いてましたね。f(^^;


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2011年5月24日 8:47
    モデレータ
  • はい。リソースファイル(xxx.resx や xxx.ja.resx)から読み込んでいます。

    • リソースファイル内で「ファイルを 読み込む」などと半角スペースを挟むと、リボンボタンでその位置で改行されることもあれば、意図せぬ位置で改行されてしまったり・・・
    • リソースファイル内でAlt+Enterにより改行すると、リボンボタンも改行されるが、行幅が広い・・・
    • リソースファイル内で「ファイルを&#10;読み込む」としても、そのまま表示されてしまう

    といった感じです。

    このリボンコントロールは、通常のWPFボタンコントロールとはちがう感じです。

    2011年5月24日 14:50
  • Microsoft Ribbon for WPF をインストールして調べてみました。なるほど、RibbonButtonLabel プロパティに設定するのですね。しかもこのプロパティ、Sytem::String しか設定できないようです。

    で、試してみたのですが、まず XAML なら以下で可能です。

    <my:RibbonButton Label="おはよううさぎ&#10;さよならいおん&#10;こんばんわに" />

    またコードビハインドなら、\n で改行可能でした。

    this.ribbonButton.Label = "おはよううさぎ\nさよならいおん\nこんばんわに";

    以上、参考になりますでしょうか?


    ひらぽん http://d.hatena.ne.jp/hilapon/
    • 回答としてマーク 山本春海 2011年6月24日 5:46
    2011年5月25日 1:43
    モデレータ
  • ありがとうございます。

    ただ、なぜリソースファイルから読み込んだ場合だけはだめなのか、分かりません。

    進展ありましたらご報告します。

    2011年5月26日 15:58
  • もうj解決済みだと思いますが、付け足しときます。

    > ただ、なぜリソースファイルから読み込んだ場合だけはだめなのか、分かりません。

    確かに resx ファイルで改行したテキストは改行認識しませんね。もっとも WPF の場合、リソースは resx ファイルでなく XAML で管理するのが正解なんだと思います。


    ひらぽん http://d.hatena.ne.jp/hilapon/
    2011年6月27日 4:50
    モデレータ