使用自定义样式创建自定义窗口

时间:2014-10-17 21:59:59

标签: c# wpf resourcedictionary

我的目标是创建一个窗口,当我使用它时,我会看到我的样式。我计划将此窗口作为视图的根。因此,我不想使用<Window>作为我的根,而是使用<MyWindow>。我的visual studio解决方案看起来像:

enter image description here

  1. 我计划使用以下资源词典命名 Styles.xaml

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    
      <Style TargetType="{x:Type TextBlock}" >
        <Setter Property="FontFamily" Value="Wingdings 3"/>
      </Style>
    
    </ResourceDictionary>
    
  2. 我希望 MyWindow.xaml 拥有我所拥有的那种风格:

    namespace ClassLibrary1.Style 
    {
        public class MyWindow : Window
        {
          public MyWindow()
          {
            // merge the dictionary
            var path = new Uri("/ClassLibrary1;component/Style/Styles.xaml", UriKind.RelativeOrAbsolute);
            var recDic = new ResourceDictionary();
            recDic.Source = path;
            var dic = recDic;
            // Clear any previous dictionaries loaded
            Resources.MergedDictionaries.Clear();
            // Add in newly loaded Resource Dictionary
            Resources.MergedDictionaries.Add(dic);
          }
        }
    }
    
  3. 现在我想使用该窗口而不是常规的Window类。然后我创建一个名为 Window1.xaml 的新窗口,它看起来像:

                 我的Testblock     

    • 请注意我必须参考:xmlns:my =“clr-namespace:ClassLibrary1.Style; assembly = ClassLibrary1”*
  4. 为什么我只在运行时看到字体?如何查看我在设计时指定的字体?我还放置了:

    this.FontFamily = new System.Windows.Media.FontFamily("Arial Black");
    

    MyWindow 的构造函数中,而不是合并字典。

0 个答案:

没有答案