如何以编程方式添加ResourceDictionary?

时间:2019-03-08 02:58:07

标签: c# wpf xaml

我是C#WPF的新手,只能依靠互联网来进行我的项目。目前,我在添加ResourceDictionary名称ThumbStyle.xaml时遇到问题,该名称包含一些需要在名为LineAdorner.cs的类文件中访问的样式。

ThumbStyle.xaml中的代码:

<Style x:Key="LineMoveThumbStyle" TargetType="{x:Type Thumb}">
    <Setter Property="Cursor" Value="SizeAll"></Setter>
    <Setter Property="Width" Value="7"></Setter>
    <Setter Property="Height" Value="7"></Setter>
</Style>

<Style x:Key="LineResizeThumbStyle" TargetType="{x:Type Thumb}">
    <Setter Property="Width" Value="7"></Setter>
    <Setter Property="Height" Value="7"></Setter>
    <Setter Property="Cursor" Value="Hand"></Setter>
</Style> 

LineAdorner.cs中的代码:

this._moveThumb = new MoveThumb();
this._moveThumb.Style = (Style)Application.Current.FindResource("LineMoveThumbStyle");
this._visuals.Add(this._moveThumb);

this._startThumb = new LineStartPointThumb(_adornedLine);
this._startThumb.Style = (Style)Application.Current.FindResource("LineResizeThumbStyle");
this._visuals.Add(this._startThumb);

this._endThumb = new LineEndPointThumb(_adornedLine);
this._endThumb.Style = (Style)Application.Current.FindResource("LineResizeThumbStyle");
this._visuals.Add(this._endThumb);

从上面可以看到,我试图使用“ FindResource”方法从Thumbsytle.xaml中检索样式到LineAdorner.cs中。但是系统抛出一个错误:

System.Windows.ResourceReferenceKeyNotFoundException occurred.
Message='LineMoveThumbStyle' resource not found.

我缺少一些步骤吗?希望任何人都可以帮助我解决这个问题。非常感谢。

2 个答案:

答案 0 :(得分:0)

我不太了解您要做什么,但这对您有帮助吗? 首先,将您的资源放在一个名为Resources的文件夹中,然后:

            var rsrc = "Resources/ThumbStyle.xaml";
            var currentRsrc = new Uri(rsrc, UriKind.RelativeOrAbsolute);
            Application.Current.Resources.MergedDictionaries[0] = new ResourceDictionary() { Source = currentRsrc };

祝你好运!

答案 1 :(得分:0)

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri("/DLLName;component/subFolder/dictionary.xaml", UriKind.RelativeOrAbsolute)
});