Пользовательский элемент управления WPF: привязка шаблона к изображению
Я создаю пользовательский элемент управления WPF,Button
сImage
а такжеText
, Я добавил два свойства зависимости в элемент управления,ImagePath
а такжеText
и шаблон элемента управления (в Themes \ Generic.xaml) представляет собой простую панель стека, которая размещает изображение и текст по горизонтали.
Text
собственность работает отлично. Но по какой-то причине образец изображения в моем тестовом проекте непоявляется, когда я используюTemplateBinding
кImagePath
свойство зависимости, чтобы получить его путь. Я проверил изображение, временно заменивTemplateBinding
в пользовательском элементе управления с путем к изображению, в этом случае оно появляется.
Я надеюсь, что кто-то с большим опытом в этой области может взглянуть и сказать мне, почему контроль нет работает как положено. Спасибо за вашу помощь.
Мое решение VS 2008 содержит один проект, CustomControlDemo. Проект содержит пользовательский элемент управления TaskButton.cs и главное окно Window1.xaml, которое я использую для тестирования элемента управления. Мой тестовый образ calendar.png находится в папке Resources на корневом уровне проекта, а Generic.xaml - в папке Themes, также на корневом уровне проекта.
Вот код для моего пользовательского элемента управления (из TaskButton.cs):
using System.Windows;
using System.Windows.Controls;
namespace CustomControlDemo
{
public class TaskButton : RadioButton
{
#region Fields
// Dependency property backing variables
public static readonly DependencyProperty ImagePathProperty;
public static readonly DependencyProperty TextProperty;
#endregion
#region Constructors
///
/// Default constructor.
///
static TaskButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(TaskButton), new FrameworkPropertyMetadata(typeof(TaskButton)));
// Initialize ImagePath dependency properties
ImagePathProperty = DependencyProperty.Register("ImagePath", typeof(string), typeof(TaskButton), new UIPropertyMetadata(null));
TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(TaskButton), new UIPropertyMetadata(null));
}
#endregion
#region Dependency Property Wrappers
///
/// The ImagePath dependency property.
///
public string ImagePath
{
get { return (string)GetValue(ImagePathProperty); }
set { SetValue(ImagePathProperty, value); }
}
///
/// The Text dependency property.
///
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
#endregion
}
}
А вот шаблон управления (из Generic.xaml):
И, наконец, вот разметка Window1, которую я использую для проверки элемента управления:
Любые идеи, почему путь к изображению нет работает? Еще раз спасибо.