0

我有一个样式,它应该有一个 MouseBinding 作为在我的 ViewModel 中执行命令的 InputBinding。

为此,我使用了 AttachedProperty:

public static readonly DependencyProperty InputBindingsProperty =
    DependencyProperty.RegisterAttached("InputBindings", typeof(InputBindingCollection),
    typeof(InputBindingAttached), 
    new FrameworkPropertyMetadata(new InputBindingCollection(),
    (s, e) =>
    {
        UIElement element = s as UIElement;
        if (element == null || !(e.NewValue is InputBindingCollection))
            return;

        element.InputBindings.Clear();
        element.InputBindings.AddRange(e.NewValue as InputBindingCollection);
    }));

public static void SetInputBindings(UIElement element, InputBindingCollection inputbindings)
{
    element.SetValue(InputBindingsProperty, inputbindings);
}

public static InputBindingCollection GetInputBindings(UIElement element)
{
    return (InputBindingCollection)element.GetValue(InputBindingsProperty);
}

这是我的 XAML:

<dc:ColumnDefinition Header="Mapper" BindingMemberPath="Mapper" Width="*">
    <dc:ColumnDefinition.CellStyle>
        <Style TargetType="{x:Type dc:AdvGridCell}">
            <Setter Property="Attached:InputBindingAttached.InputBindings">
                <Setter.Value>
                    <InputBindingCollection>
                        <MouseBinding Gesture="LeftDoubleClick" 
                                      Command="{Binding Path=DataContext.EditMapperCommand, ElementName=parent}"/>
                    </InputBindingCollection>
                </Setter.Value>
            </Setter>
        </Style>
    </dc:ColumnDefinition.CellStyle>
</dc:ColumnDefinition>

XAML 中的我的 Root 元素是从 UserControl 派生的自定义类。根元素的名称是

父母
. 在以前的项目中,我也使用了这个并且一切正常。但是现在我有一个奇怪的错误,一个名为“Value is null”的参数。如果我在 AttachdProperty 中设置断点,我可以看到它包含命令并且恰好是 AttachedProperty 设置的 2 倍。之后我没有 Stacktrace 没有 Innerexception 什么都没有......只是任何值为空的消息。

如果我在 Binding 中使用 RelativeSource 没有错误,但找不到命令。我真的不知道出了什么问题。

4

0 回答 0