Dot-Net

為 TextBlock 啟用命令綁定

  • March 25, 2016

我正在開發一個 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可以是內置應用程序命令之一,它將使用如上所示的語法,也可以是從介面繼承的自定義命令CommandICommand在這種情況下,語法將是:

<MouseBinding Command="{Binding myCustomCommand}" MouseAction="LeftClick"/>

MouseAction沒有提供任何有關放置內容的 Intellisense 提示(在 VS2015 中),因此您必須進行一些探勘才能獲得有效的列舉。

從 .NET 4.5 開始,有效條目為MouseAction

  • LeftClick - 滑鼠左鍵點擊。
  • LeftDoubleClick - 滑鼠左鍵點兩下。
  • MiddleClick - 滑鼠中鍵點擊。
  • MiddleDoubleClick - 滑鼠中鍵點兩下。
  • 無 - 無操作。
  • RightClick - 滑鼠右鍵點擊。
  • RightDoubleClick - 滑鼠右鍵點兩下。
  • WheelClick - 滑鼠滾輪旋轉。

上面顯示的常量取自MSDN

引用自:https://stackoverflow.com/questions/1789975