🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

6929閲覧

RadioButtonのラベルのサイズを変更したい

usk

総合スコア397

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2019/11/13 09:00

編集2019/11/14 06:41

前提条件

  • アプリケーション全体のデザインに関わるXAML(Style.xaml)を用意し、App.xaml で該当ファイルを MergedDictionaries にて読込する.
  • Style.xaml にて TargetType:TextBlock の Style に FontSize の設定を記述する.
  • (追加)Style.xaml の TextBlock の定義箇所では x:Key の指定は避けたいです。

(デフォルトの TextBlock のスタイルとして定義したい為)

実現したいこと

前提条件(上記参照)の状況下で、RadioButton のテキストサイズを変更したいです。

発生している問題

RadioButton の FontSize プロパティに値をセットしてもサイズが変わりません。
(同様に FontWeight も NG でした)

確認したこと

文字色(Foreground)のスタイル情報を設定すると、正しく適用されたのを確認しました。
(→ MainWindow.xaml (下記サンプルコード)に記述したスタイル設定が読み込まれていないという訳では無さそうです)

(この内容は間違いであることを確認)

該当のソースコード

XAML

1(App.xaml) 2<Application x:Class="WpfApp2.App" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="clr-namespace:WpfApp2" 6 StartupUri="MainWindow.xaml"> 7 <Application.Resources> 8 <ResourceDictionary> 9 <ResourceDictionary.MergedDictionaries> 10 <ResourceDictionary Source="pack://application:,,,/WpfApp2;component/Style.xaml" /> 11 </ResourceDictionary.MergedDictionaries> 12 </ResourceDictionary> 13 </Application.Resources> 14</Application>

XAML

1(Style.xaml) 2<ResourceDictionary 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 5 <Style TargetType="{x:Type TextBlock}"> 6 <Setter Property="FontSize" Value="20" /> 7 <!-- 8 <Setter Property="Foreground" Value="Green" /> 9 <Setter Property="FontWeight" Value="Light" /> 10 --> 11 </Style> 12</ResourceDictionary>

XAML

1(MainWindow.xaml) 2<Window x:Class="WpfApp2.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 5 <Window.Resources> 6 <Style TargetType="{x:Type RadioButton}"> 7 <Setter Property="FontSize" Value="12" /> 8 <!-- 文字色など上書きされて適用されることを確認. 9 <Setter Property="Foreground" Value="Green" /> 10 --> 11 <!-- 太さも適用されない. 12 <Setter Property="FontWeight" Value="Bold" /> 13 --> 14 </Style> 15 </Window.Resources> 16 <Grid> 17 <StackPanel> 18 <TextBlock Text="テキストブロック" /> 19 <!-- ここのラジオボタンのラベルを 12pt で表示したい. --> 20 <RadioButton Content="ラジオ1" GroupName="ITem"/> 21 <RadioButton Content="ラジオ2" GroupName="ITem" FontSize="12" /> 22 </StackPanel> 23 </Grid> 24</Window>

実行結果

イメージ説明

補足情報(FW/ツールのバージョンなど)

  • WPF
  • .NetFramework 4.5.2
  • C#
  • Visual Studio 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんな単純な話ではないのかな?

XAML

1<RadioButton> 2 <TextBlock Text="ラジオボタン" FontSize="20"/> 3</RadioButton>

複雑な話ならControlTemplate でゴニョニョしてください。
RadioButton のスタイルとテンプレート

既に前提条件

Style.xaml にて TargetType:TextBlock の Style に FontSize の設定を記述する

の段階でどうかと思いますが…

投稿2019/11/14 02:13

hihijiji

総合スコア4152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usk

2019/11/14 06:40 編集

ご回答ありがとうございます! 確かにこちらの方法でRadioButtonのフォントサイズを変更できることを確認しました! 今回の問題点は、Contentを指定した場合、RadioButton として定義した Style や(FontSize)プロパティよりも、TextBlock で定義した Style が適用されてしまうことが原因だと理解しました。 > 既に前提条件 > Style.xaml にて TargetType:TextBlock の Style に FontSize の設定を記述する > の段階でどうかと思いますが… アプリケーション内の TextBlock 属性を一括定義するのは、一般的な利用方法じゃないのですね。 もうちょっと勉強します。
hihijiji

2019/11/14 06:54

書き方の違いだけで、RadioButtonのContentに入れているのは同じです。 Contentに TextBlock を入れるか string を入れるかの違いですね。
guest

0

スタイル名を定義して、各コントロールにスタイルを当てはめたところ、変更できました。
App.xamlは変更なしです。

XAML

1(Style.xaml) 2<ResourceDictionary 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 5 6 <!-- x:Keyで任意のスタイル名を定義 --> 7 <Style x:Key="MyTextBlockStyle" TargetType="{x:Type TextBlock}"> 8 <Setter Property="FontSize" Value="20" /> 9 </Style> 10</ResourceDictionary>
(MainWindow.xaml) <Window x:Class="WpfApp2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Window.Resources> <!-- x:Keyで任意のスタイル名を定義 --> <Style x:Key="MyRadioButtonStyle" TargetType="{x:Type RadioButton}"> <Setter Property="FontSize" Value="12" /> </Style> </Window.Resources> <Grid> <StackPanel> <!-- 各コントロールにスタイルを指定 --> <TextBlock Text="テキストブロック" Style="{StaticResource MyTextBlockStyle}" /> <RadioButton Content="ラジオ1" GroupName="ITem" Style="{StaticResource MyRadioButtonStyle}" /> <RadioButton Content="ラジオ2" GroupName="ITem" Style="{StaticResource MyRadioButtonStyle}" /> </StackPanel> </Grid> </Window>

投稿2019/11/13 10:15

takapi_cs

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usk

2019/11/14 00:48 編集

ご回答ありがとうございます! ただ、後から前提条件を付け加える形で申し訳ありませんが、Style.xaml の TextBlock に x:Key を追加はしたくないのです。 基本、アプリケーション全般の "TextBlock" には、Style.xaml のスタイルを適用したいのです。 (x:Keyを指定すると、すべての TextBlock に Style 属性を設定が必要になるので、できれば避けたいです) ComboBox や RadioButton などの標準コンポーネントの内部で利用されている TextBlock には適用させたくない(もしくは別途上書きできる形が望ましい)のですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問