Вот чего я хочу достичь:
- WPF работает так, что когда Text имеет привязку поля Text в Свойства пусты, и вам нужно щелкнуть пустое поле, затем у вас появится список контекстного меню, выберите какой-либо элемент в меню, чтобы увидеть значение привязки.
Я хочу создать собственное текстовое поле, где текст< Свойство /code> по-прежнему имеет привязку, но с возможностью обновления значения привязки в поле «Текст» в «Свойствах», не нажимая «Текст» и не выбирая его в меню, например. Пользовательское выражение и т. д.
ИЛИ - Я хочу добавить новое свойство с именем «Путь», которое отображается в окне «Свойства», но при изменении текста оно выигрывает. не будет добавлен в xaml. Оно будет связано со свойством Text. Таким образом, будет отображаться значение привязки из свойства Text.
Это позволит пользователю установить пользовательскую привязку непосредственно через свойство Path, не вызывая дополнительных диалоговых окон или всплывающих окон, которые появляются при нажатии на Text в окне свойств. Свойство Path не будет напрямую отражено в XAML.
В настоящее время я реализовал диалоговое окно (PropertyEditorWindow), которое открывается как всплывающее окно при срабатывании определенного события в текстовом поле. Однако я хотел бы, например. интегрировать это окно в окно «Свойства» вместо того, чтобы размещать его в виде отдельного всплывающего окна.
Я стремлюсь получить текстовое значение из привязки, гарантируя при этом, что любые изменения этого свойства не отражаются напрямую в интерфейс XAML в режиме разработки. Возможно ли добиться этого в WPF?
отобразится в окне свойств:
MineText |Binding|
Путь |Get.Test|
public class MineTextBox : TextBox
{
public static readonly DependencyProperty MineTextProperty =
DependencyProperty.Register("MineText", typeof(string), typeof(MineTextBox),
new PropertyMetadata(string.Empty));
public string MineText
{
get { return (string)GetValue(MineTextProperty); }
set { SetValue(MineTextProperty, value); }
}
static MineTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MineTextBox), new FrameworkPropertyMetadata(typeof(MineTextBox)));
}
private void OpenEditor(string newText)
{
var editorWindow = new PropertyEditorWindow(newText);
if (editorWindow.ShowDialog() == true)
{
MineText = editorWindow.MineText;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... h-in-prope