2011-01-13 40 views
1

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

ComboBoxからプロパティを追加し、コントロールテンプレートをオーバーライドしてTextBoxのプロパティを設定することができますが、xamlから標準コンボボックスでこれを行う方法が欲しいと思います。

答えて

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; 
} 
+2

+1、と私はこのコードをカプセル化するために、 '添付Property'や' Behavior'を使用することをお勧めしたいと思います。 – decyclone

0

私は、これは3年以上古いです知っているが、多分それは誰かをお手伝いします。それは基本的に言及したdecyclone Behavoirとしてリックの答えです:

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; 
     } 
    } 
} 
関連する問題