我已经实现了基于Memento模式的撤消系统。我禁用内置撤消文本框,并想知道如何在ComboBox上做到这一点。我拥有的Combobox是可编辑的,所以它包含一个TextBox,如何访问它以禁用它的撤消。WPF:在可编辑组合框中禁用撤消
我知道我可以从ComboBox派生添加一个属性并覆盖控件模板并设置TextBox上的属性,但我想从xaml的标准组合框上执行此操作。
我已经实现了基于Memento模式的撤消系统。我禁用内置撤消文本框,并想知道如何在ComboBox上做到这一点。我拥有的Combobox是可编辑的,所以它包含一个TextBox,如何访问它以禁用它的撤消。WPF:在可编辑组合框中禁用撤消
我知道我可以从ComboBox派生添加一个属性并覆盖控件模板并设置TextBox上的属性,但我想从xaml的标准组合框上执行此操作。
你可以看看它从这样的模板:
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;
}
我知道这是3+岁,但也许它会帮助别人。它基本上是里克的回答为Behavoir是decyclone提到:
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;
}
}
}
+1,我想用'附加Property`或`Behavior`封装此代码提示。 – decyclone 2011-01-13 06:51:22