2010-03-26 50 views

回答

1

http://www.devx.com/dotnet/Article/34644/1954

可以禁用所有默認的通過添加啓用的CommandBinding命令。在下面的代碼段,該屬性CanExecute引用的事件處理程序可併入邏輯以防止命令執行:

<RichTextBox.CommandBindings> 
    <CommandBinding 
     Command="EditingCommands.ToggleBold" 
     CanExecute="BlockTheCommand"/> 
    </RichTextBox.CommandBindings> 

在C#代碼隱藏文件對應的事件處理程序設置在兩個屬性事件對象。將CanExecute設置爲false可使與該事件綁定的組件知道該選項當前不可用。在這種情況下,要阻止ToggleBold命令,將CanExecute設置爲false會禁用工具欄中的粗體按鈕。第二個屬性,辦理防止ToggleBold命令被路由到的RichTextBox:

protected void BlockTheCommand(object sender, 
    CanExecuteRoutedEventArgs e) 
    { 
    e.CanExecute = false; 
    e.Handled = true; 
    } 

如果你選擇把你的CanExecute處理程序複雜的邏輯,記住,這個事件被經常解僱,因爲UI會不斷檢查並重新檢查以查看命令是否可用。如果您需要訪問資源(如數據庫或Web服務)以確定命令是否可用,請確保緩存資源並僅定期檢查它,否則會破壞您的性能。

相關問題