カスタム化したTextBoxExにXAMLから直接「Style="{StaticResource MaterialDesignTextBox}」と指定すると反映されますが、そうではなくデフォルトで反映させたいのですがどのようにしたらよいでしょうか?
#追記
言葉足らずで申し訳ありません。
MaterialDesignは「Material Design In XAML Toolkit」(Nugetでインストール)というライブラリを使用してコントロールのスタイルを変えたという意味で使いました。
導入後はButton、ListBox、TextBox等確かにデザインは反映されたのですが、カスタムコントロールだけが通常のスタイルのままです。
CSSでいうインラインスタイルでの指定ではなく、外部ファイル等でタグに直接スタイルを指定する・・・と言うような方法を探してします。
以上ご教示よろしくお願いいたします。
#追記2
Zuishinさんの示したコードでサンプルプロジェクトを作りやってみたところ適当に複数個配置したTextBoxにはスタイルが適用されましたが、サンプルプロジェクトではない今回のプロジェクトではMaterialDesignのスタイルは適用されませんでした。
App.xamlで上記でとった方法と同じような事をしていると思うのですが、配置したカスタムコントロール(TextBox)には適用されなかったです。
なんとなくZuishinさんの示したコードで全体に適用する原理はつかめたのですがなぜこれで適用されないのかが疑問です。
CustomControl1.cs
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.Windows.Controls; 8using System.Windows.Data; 9using System.Windows.Documents; 10using System.Windows.Input; 11using System.Windows.Media; 12using System.Windows.Media.Imaging; 13using System.Windows.Navigation; 14using System.Windows.Shapes; 15 16namespace MyWpf.Controls 17{ 18 public class CustomControl1 : TextBox 19 { 20 static CustomControl1() 21 { 22 DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1))); 23 } 24 } 25}
Generic.xaml
XAML
1<ResourceDictionary 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:local="clr-namespace:MyWpf.Controls"> 5 <Style TargetType="{x:Type local:CustomControl1}" BasedOn="{StaticResource {x:Type TextBox}}"> 6 7 </Style> 8</ResourceDictionary>
MainWindow.xaml
XAML
1<Window 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" 7 xmlns:local="clr-namespace:MaterialWindow" 8 xmlns:Controls="clr-namespace:MyWpf.Controls" 9 x:Class="MaterialWindow.MainWindow" 10 TextElement.Foreground="{DynamicResource MaterialDesignBody}" 11 TextElement.FontWeight="Regular" 12 TextElement.FontSize="13" 13 TextOptions.TextFormattingMode="Ideal" 14 TextOptions.TextRenderingMode="Auto" 15 Background="{DynamicResource MaterialDesignPaper}" 16 FontFamily="{DynamicResource MaterialDesignFont}" 17 mc:Ignorable="d" 18 Title="MainWindow" Height="450" Width="800"> 19 20 <Grid> 21 <Controls:CustomControl1 HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" Text="CustomControl1 " VerticalAlignment="Top" Width="120"/> 22 </Grid> 23</Window> 24
App.xaml
XAML
1<Application 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:local="clr-namespace:MaterialWindow" 5 xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" x:Class="MaterialWindow.App" 6 StartupUri="MainWindow.xaml"> 7 <Application.Resources> 8 <ResourceDictionary> 9 <ResourceDictionary.MergedDictionaries> 10 <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" /> 11 <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> 12 <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" /> 13 <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" /> 14 </ResourceDictionary.MergedDictionaries> 15 <!-- primary --> 16 <SolidColorBrush x:Key="PrimaryHueLightBrush" Color="#744CE0"/> 17 <SolidColorBrush x:Key="PrimaryHueLightForegroundBrush" Color="#FFFFFF"/> 18 <SolidColorBrush x:Key="PrimaryHueMidBrush" Color="#6134D9"/> 19 <SolidColorBrush x:Key="PrimaryHueMidForegroundBrush" Color="#FFFFFF"/> 20 <SolidColorBrush x:Key="PrimaryHueDarkBrush" Color="#4D1DCF"/> 21 <SolidColorBrush x:Key="PrimaryHueDarkForegroundBrush" Color="#FFFFFF"/> 22 <!-- accent --> 23 <SolidColorBrush x:Key="SecondaryAccentBrush" Color="#5C5B5E"/> 24 <SolidColorBrush x:Key="SecondaryAccentForegroundBrush" Color="#FFFFFF"/> 25 </ResourceDictionary> 26 </Application.Resources> 27</Application>
回答2件
あなたの回答
tips
プレビュー