2015-11-02 67 views
2

添加MergedDictionaries将样式我有这个style在资源文件:通过代码

<ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="Colors.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
      <Style TargetType="TextBox" x:Key="StandardTextBox"/> 
       <Setter Property="Foreground" Value="{StaticResource Color1}"/> 
      </Style> 
</ResourceDictionary> 

(Colors.xaml包含我brushes

使用style我的代码:

ResourceDictionary TetxboxStyles = new ResourceDictionary(); 
TetxboxStyles.Source = (new Uri("TextboxStyles.xaml", UriKind.RelativeOrAbsolute)); 
Resources.MergedDictionaries.Add(TetxboxStyles); 
tb_input.Style = (Style)Find("StandardTextBox"); 

这种方法没有问题,但当我通过代码而不是TextboxStyles文件动态添加颜色资源时,它不起作用:

ResourceDictionary TetxboxStyles = new ResourceDictionary(); 
TetxboxStyles.Source = (new Uri("TextboxStyles.xaml", UriKind.RelativeOrAbsolute)); 

//Adding the Colors.xaml Resource 
ResourceDictionary Colors = new ResourceDictionary(); 
brushes.Source = (new Uri("Colors.xaml", UriKind.RelativeOrAbsolute)); 
TetxboxStyles.MergedDictionaries.Add(Colors); 

Resources.MergedDictionaries.Add(TetxboxStyles); 
tb_input.Style = (Style)Find("StandardTextBox"); 

输出错误:

System.Windows.Markup.XamlParseException 

"{DependencyProperty.UnsetValue}"

+0

你想通过资源字典 “Brushes.xaml” 画你的文本框?包含刷TextboxStyles.xaml , 文件: – StepUp

+0

文件,其中包含风格Colors.xaml 文本框具有TextboxtStyles.xaml它的风格,同时你为什么需要TextboxSyles.xaml具有Colors.xaml – MyNameIsHans

+0

它的颜色/画笔将多个ResourceDictionaries应用于一个控件(到您的TextBox)?因为您应该在一个ResourceDictionary中编写自己的模板,您可以在其中定义颜色和控件的画笔,如https://msdn.microsoft.com/de-de/library/ms752068(v=vs.85).aspx – StepUp

回答

0

我换成StaticResourceDynamicResource和它的作品