问题
I'm currently wrestling with Tables inside RichTextBoxs in WPF. In WPF, tables don't have rows and columns, they just have rows, each having a certain number of cells. When a user presses the "Add Column" button, my program adds a new cell to each row.
The problem with using this method is after a user adds a column, if they press undo, it removes each cell one by one, obviously not what the user would expect.
Does anyone know a way to temporarily disable the addition of actions to the undo queue, or a way to group undo actions, or any other solution to my problem?
回答1:
If you want to group undo actions (rather than disable undo entirely), you can group a set of programmatic changes via TextBoxBase.BeginChange() then, after making the changes, TextBoxBase.EndChange(), i.e.:
richTextBox.BeginChange();
try
{
// Add column
// For each row, add a cell to the column.
}
finally
{
richTextBox.EndChange();
}
Or, equivalently, you can call TextBoxBase.DeclareChangeBlock() inside a using statement:
using (richTextBox.DeclareChangeBlock())
{
// Add column
// For each row, add a cell to the column.
}
回答2:
you can disable undo
by setting IsUndoEnabled
property to false
or you can limit the undo by using UndoLimit
. you can disable the undo by setting this property to 0
, ie., UndoLimit="0"
<RichTextBox Name="myRitchTextBox" IsUndoEnabled="False" />
来源:https://stackoverflow.com/questions/32042980/is-there-a-way-to-group-or-temporarily-disable-the-undo-history-for-a-richtextbo