Dot-Net
為 TextBlock 啟用命令綁定
我正在開發一個 WPF 應用程序,並且有一個 TextBlock,我想在點擊時使用命令綁定來觸發命令。實現這一目標的最佳方法是什麼?
- TextBlock 控制項沒有 Command 屬性,但它有 CommandManager。這是什麼?它可以用於命令綁定嗎?我已經看到了許多其他控制項以及此屬性..
- 是否有一些我監督過的可以使用的控制?例如是否建議使用按鈕並將其樣式設置為看起來不像按鈕?
- 是否有一些支持命令綁定的控制項,我可以將它們包裹在 TextBlock 周圍?
- 我是否應該創建一個基本上是 TextBlock 的自定義控制項,但具有額外的屬性 Command 和 CommandArgument,可以在例如 MouseLeftButtonDown 屬性上啟用命令綁定。
是否有一些我監督過的可以使用的控制?例如是否建議使用按鈕並將其樣式設置為看起來不像按鈕?
是的。最簡單的方法是將按鈕重新模板化,使其像 TextBlock 一樣,並利用按鈕類的命令屬性。
像這樣的東西:
<ControlTemplate TargetType="Button"> <TextBlock Text="{TemplateBinding Content}" /> </ControlTemplate> ... <Button Content="Foo" Command="{Binding Bar}" />
下面的 XAML 可用於將命令綁定添加到 WPF 文本塊,然後該文本塊將作用於滑鼠操作。
<TextBlock FontWeight="Bold" Text="Header" Cursor="Hand"> <TextBlock.InputBindings> <MouseBinding Command="ApplicationCommands.Cut" MouseAction="LeftClick"/> </TextBlock.InputBindings> </TextBlock>
Command可以是內置應用程序命令之一,它將使用如上所示的語法,也可以是從介面繼承的自定義命令Command。ICommand在這種情況下,語法將是:<MouseBinding Command="{Binding myCustomCommand}" MouseAction="LeftClick"/>
MouseAction沒有提供任何有關放置內容的 Intellisense 提示(在 VS2015 中),因此您必須進行一些探勘才能獲得有效的列舉。從 .NET 4.5 開始,有效條目為
MouseAction:
- LeftClick - 滑鼠左鍵點擊。
- LeftDoubleClick - 滑鼠左鍵點兩下。
- MiddleClick - 滑鼠中鍵點擊。
- MiddleDoubleClick - 滑鼠中鍵點兩下。
- 無 - 無操作。
- RightClick - 滑鼠右鍵點擊。
- RightDoubleClick - 滑鼠右鍵點兩下。
- WheelClick - 滑鼠滾輪旋轉。
上面顯示的常量取自MSDN。