События TreeView с поведением Attached Command - PullRequest
1 голос
/ 22 марта 2012

Я хочу обрабатывать события в виде дерева с ACB (http://marlongrech.wordpress.com/2008/12/04/attachedcommandbehavior-aka-acb/).

Я застрял с привязками в файле XAML. Событие запускается, но я продолжаю получать исключения нулевой ссылки в библиотеке ACB, потому что стратегия равна нулю:

    /// <summary>
    /// Executes the strategy
    /// </summary>
    public void Execute()
    {
        strategy.Execute(CommandParameter);
    }

В файл XAML я добавил следующее (отрывок):

xmlns:acb="clr-namespace:AttachedCommandBehavior;assembly=AttachedCommandBehavior"

    <StackPanel x:Name="VerklaringenTreeviewPanel">
    <Border x:Name="TreeviewHeaderBorder" Style="{StaticResource TreeviewBorderHeaderStyle}">
        <TextBlock x:Name="tbTreeviewHeader" Text="Verklaringen concept" Style="{StaticResource TreeviewHeaderStyle}"/>
    </Border>

    <TreeView x:Name="MyTreeview" ItemsSource="{Binding}" Style="{StaticResource TreeviewStyle}">
        <TreeView.Resources>
            <ResourceDictionary Source="..\Themes\TreeviewItemStyle.xaml" />
        </TreeView.Resources>
    </TreeView>

    <StackPanel.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:MyDataType}" ItemsSource="{Binding MyChildDataType}">
            <StackPanel Orientation="Horizontal" acb:CommandBehavior.Event="MouseDown" acb:CommandBehavior.Command="{Binding SomeCommand}" acb:CommandBehavior.CommandParameter="Hi There">

И в Viewmodel я добавил:

        Public Property SomeCommand() As ICommand
        Get
            Return _someCommand
        End Get
        Private Set(value As ICommand)
            _someCommand = value
        End Set
    End Property

    Public Sub New()
        MyBase.New()

        Dim simpleCommand As SimpleCommand = New SimpleCommand()
        simpleCommand.ExecuteDelegate = Sub(x As Object)
                                            Dim test As String
                                            test= "noot" 'I want to hit this breakpoint
                                        End Sub
        Me.SomeCommand = simpleCommand
    End Sub

Кто может мне помочь с переплетом?

С уважением,

Michel

1 Ответ

1 голос
/ 23 марта 2012

Не слишком описательным исключением является throw, потому что эта привязка нарушена: acb:CommandBehavior.Command="{Binding SomeCommand}".

Итак, WPF не смог найти вашу собственность SomeCommand.Я предполагаю, что проблема заключается в HierarchicalDataTemplate, поэтому DataContext не то, что вы ожидаете ...

Проверьте на наличие ошибок привязки в окне вывода Visual Studio во время выполнения, и вы будете знать, что исправитьэто должно работать.

...