Как добавить ResourceDictionary программно? - PullRequest
0 голосов
/ 08 марта 2019

Я новичок в 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.

Есть ли какие-то шаги, которые я пропускаю?Надеюсь, что кто-нибудь может помочь мне с этой проблемой.Большое спасибо.

1 Ответ

0 голосов
/ 08 марта 2019

Я не совсем понимаю, что вы пытаетесь сделать, но поможет ли это вам?Сначала поместите ваш ресурс в папку с именем Resources, а затем:

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

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...