Я создал собственный элемент управления TaskButton, который принимает изображение и текст. Свойства задаются следующим образом:Проблема относительного пути WPF
<custom:TaskButton Text="Calendar" ImagePath="Images/calendar.png" ... />
Мой пользовательский класс управления реализует текстовые и ImagePath свойства, а шаблон управления для пользовательского элемента управления (в Themes \ Generic.xaml) устанавливает его содержание, как это, используя объект RelativeSource чтобы получить путь изображения:
<!-- Button Content -->
<StackPanel>
<Image Source="{Binding Path=ImagePath, RelativeSource={RelativeSource TemplatedParent}}" Width="24" Height="24" Stretch="Fill" Margin="10,0,0,0" />
<TextBlock Text="{TemplateBinding Text}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI" FontWeight="Bold" Margin="6,0,10,0" Foreground="Black" />
</StackPanel>
контроля отлично работает в большинстве случаев, но в конкретном проекте, относительный путь к изображению данной кнопки не разрешается правильно, и не отображается изображение кнопки. Вот что я догадался до сих пор:
Я правильно вхожу в путь, когда использую пользовательский элемент управления. Если я поместил элемент управления изображением на ту же конструктивную поверхность с тем же относительным путем, он будет разрешен правильно.
Проблема с относительным путем. Если я заменил относительный путь абсолютным путем, путь будет правильно разрешен и изображение будет отображаться.
Как я уже говорил выше, в большинстве случаев контроль работает отлично. Единственный случай, когда он не работает, - это проект Prism 2.1, в котором элемент управления создается в пользовательском элементе в модуле Prism. Модуль представляет собой простую библиотеку классов, но он имеет все ссылки на проект WPF.
Любая идея, почему относительный путь не сработает? Заранее спасибо за вашу помощь.
BTW, я знаю, что я мог бы сделать то же самое, используя шаблон управления с ContentPresenter. Спецификации проекта требуют настраиваемого элемента управления с указанными свойствами. –
У меня нет идей, вы можете показать соответствующий код, который создает пользовательский элемент управления с вашим пользовательским элементом управления? –