У меня есть пользовательский элемент управления в качестве внешней библиотеки. Это просто текстовое поле с некоторой дополнительной функциональностью и пользовательским контекстом.
< /code>
и Codebehind выглядит так: < /p>
namespace CustomControls
{
public class LabelTextBox : TextBox
{
public bool EditTemplateMode
{
get
{
return (bool)GetValue(EditTemplateModeProperty);
}
set
{
SetValue(EditTemplateModeProperty, value);
}
}
public static readonly DependencyProperty EditTemplateModeProperty
= DependencyProperty.Register(
"EditTemplateMode",
typeof(bool),
typeof(LabelTextBox),
new PropertyMetadata(false)
);
internal RelayCommand AddColumnAfterCommand => new(AddColumnAfter);
private void AddColumnAfter(object obj)
{
AddColumn?.Invoke(this, new RoutedEventArgs());
}
public event RoutedEventHandler? AddColumn;
static LabelTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(LabelTextBox), new FrameworkPropertyMetadata(typeof(LabelTextBox)));
}
}
}
< /code>
, где RelayCommand реализовал интерфейс icommand.
Что я проверил, так это то, что Relaycommand AddColumnafterCommand никогда не вызывается в ContextMenu, нажатый. Я думаю, что должно быть какое -то относительное место для шаблона, но я понятия не имею, как это сделать. Также я могу определить класс как < /p>
public class LabelTextBox : Control
< /code>
Но в этом случае мне нужно много свойств зависимостей от Textbox, я хотел бы использовать в этом управлении. Может это лучшая идея?
Подробнее здесь: https://stackoverflow.com/questions/797 ... rol-in-wpf