1

Mementoパターンに基づいた元に戻るシステムを実装しました。TextBoxで組み込みのUndoを無効にし、ComboBoxでこれを行う方法を考えていました。私が持っているコンボボックスは編集可能であるため、TextBoxが含まれています。これにアクセスして、元に戻すを無効にするにはどうすればよいですか。

ComboBoxから派生してプロパティを追加し、コントロールテンプレートをオーバーライドして、TextBoxにプロパティを設定できることはわかっていますが、xamlの標準のComboBoxでこれを行う方法が必要です。

4

2 に答える 2

4

次のようにテンプレートから検索できます。

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;
}
于 2011-01-13T05:58:27.583 に答える
0

私はこれが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;
        }
    }
}
于 2014-03-24T20:05:24.183 に答える