WPF: отключить отмену в редактируемом ComboBox - PullRequest
1 голос
/ 13 января 2011

Я реализовал систему отмены, основанную на шаблоне Memento.Я отключил встроенную функцию отмены в TextBox, и мне было интересно, как это сделать в ComboBox.Имеющийся у меня комбинированный список является редактируемым, поэтому он содержит TextBox. Как получить к нему доступ, чтобы отключить отмену на нем.свойство на TextBox, но я хотел бы сделать это на стандартном ComboBox из xaml.

Ответы [ 2 ]

4 голосов
/ 13 января 2011

Вы можете посмотреть это по шаблону так:

public Window1()
{
    this.InitializeComponent();

    comboBox1.Loaded += new RoutedEventHandler(comboBox1_Loaded);
}

void comboBox1_Loaded(object sender, RoutedEventArgs e)
{
    var textBox = comboBox1.Template.FindName("PART_EditableTextBox", comboBox1) as TextBox;
}
0 голосов
/ 25 марта 2014

Я знаю, что это 3+ года, но, возможно, это кому-нибудь поможет.В основном ответ Рика как поведения, о котором говорил дециклон:

public class ComboBoxDisableUndoBehavoir : Behavior<ComboBox>
{
    public ComboBoxDisableUndoBehavoir()
    {
    }

    protected override void OnAttached()
    {
        if (AssociatedObject != null)
        {
            AssociatedObject.Loaded += AssociatedObject_Loaded;
        }
        base.OnAttached();
    }

    void AssociatedObject_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        var tb = AssociatedObject.Template.FindName("PART_EditableTextBox", AssociatedObject) as TextBox;
        if (tb != null)
        {
            tb.IsUndoEnabled = false;
        }
    }
}
...