控件模板中的 WPF 命令 -> "CommandConverter cannot convert from > System.String."

WPF Commands in Control templates -> "CommandConverter cannot convert from > System.String."

我有一个来自 Telerik 的自定义控件模板,我已经在其中添加了一个(拆分)按钮。 如何将命令处理程序绑定到它?我试图在 public class 中添加 public 静态命令 使用像 x:static ns:Class.Command 和各种变体(如下所示)和大多数 SO-hits.

这样的绑定
<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadSplitButton}}, Path=ShowSearchCommand}" Margin="2" />

<Button Content="Click me" Command="{x:Static vm:MainWindowViewModel.ShowSearchCommand}" CommandParameter="one"/>

它们都出现在错误消息中

NotSupportedException: CommandConverter cannot convert from System.String.

我已经尝试在视图模型和 class pf 中定义命令(见下文)(我正在使用 Prism(因此是委托命令,但它不必是委托命令,只要它有效)

  //public static RoutedUICommand ShowSearchCommand = new RoutedUICommand("ShowSearchCommand", "ShowSearchCommand", typeof(TabbedWindowCommands));


//public static DelegateCommand ShowSearchCommand = new DelegateCommand();

由于 ShowSearchCommand 不是 RadSplitButton 本身的 属性,而是其 DataContext 的 属性,您应该在绑定路径中包含 DataContext

<Button Command="{Binding RelativeSource={RelativeSource FindAncestor, 
    AncestorType={x:Type telerik:RadSplitButton}}, Path=DataContext.ShowSearchCommand}" Margin="2" />

您可能还想根据设置 DataContext 的位置和方式将 AncestorType 更改为 Window

另请注意,您只能绑定到 public 属性,这意味着 ShowSearchCommand 必须是 属性 而不是字段:

public DelegateCommand ShowSearchCommand { get; }