Я новичок в С# 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.
Есть ли какие-то шаги, которые я пропустил? Надеюсь, что кто-нибудь может помочь мне с этой проблемой. Спасибо большое.
Я предполагаю, что ThumbStyle.xaml не объединен с доступными ресурсами LineAdorner.cs. Вы можете добавить его примерно так: ResourceDictionary r = new ResourceDictionary(); r.Source = new Uri("Uri/To/your/xaml"); Application.Current.Resources.MergedDictionaries.Add(r);
Почему вы хотите добавить словарь ресурсов программно, а не ссылаться на него в ресурсах app.xaml?
Глупый я .. Спасибо всем за вашу любезную помощь .. в конце концов я заметил, что не добавил их в ресурсы app.xaml .. Привет @grek40 за напоминание .. спасибо, приятель





Я не совсем понимаю, что вы пытаетесь сделать, но поможет ли это вам? Сначала поместите свой ресурс в папку с именем Resources, а затем:
var rsrc = "Resources/ThumbStyle.xaml";
var currentRsrc = new Uri(rsrc, UriKind.RelativeOrAbsolute);
Application.Current.Resources.MergedDictionaries[0] = new ResourceDictionary() { Source = currentRsrc };
Удачи!
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri("/DLLName;component/subFolder/dictionary.xaml", UriKind.RelativeOrAbsolute)
});
В какой словарь ресурсов добавлен ваш LineResizeThumbStyle? Можете найти ответ здесь: stackoverflow.com/questions/618648/…