ツリービュー内のすべてのtreeViewitemsの崩壊したイベントにコマンドをバインドする方法はありますか?

StackOverflow https://stackoverflow.com/questions/3589589

質問

私はその人が何に似たことをしようとしています これ 質問はやりたかった。

ある どれか, 、これを行うためのよりエレガントな方法で、そこで提案されている作業よりも?

(最後の手段として)これを行うためのより良いサポートを持つ別のMVVMフレームワークはありますか?

今、私はこのようなツリービューから継承するカスタムコントロールを作成しようとしています。

public ModdedTreeView()
    {
        this.AddHandler(TreeViewItem.CollapsedEvent, new RoutedEventHandler(ItemCollapsed));
    }

public RelayCommand<RoutedEventArgs> ItemCollapsedCommand
    {
        get { return (RelayCommand<RoutedEventArgs>)GetValue(ItemCollapsedCommandProperty); }
        set { SetValue(ItemCollapsedCommandProperty, value); }
    }

    // Using a DependencyProperty as the backing store for ItemCollapsedCommand.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty ItemCollapsedCommandProperty =
        DependencyProperty.Register("ItemCollapsedCommand", typeof(RelayCommand<RoutedEventArgs>), typeof(ModdedTreeView), new UIPropertyMetadata(null));

protected void ItemCollapsed(object sender, RoutedEventArgs e)
    {
        if (ItemCollapsedCommand != null)
            ItemCollapsedCommand.Execute(e);
    }

次に、発射したいコマンドをItemCollapsedCommand Dependancyプロパティにバインドします。しかし、これでさえ機能していません。

私は手に入れ続けます InvalidOperationException:「ディスパッチャーの処理は停止されていますが、メッセージはまだ処理されています。」

何か案は?

役に立ちましたか?

解決

参照したリンクで説明されている「EventToCommand」クラスを使用していません。しかし、この投稿のものを試してみてください。 http://sachabarber.net/?p=514. 。私はその投稿でコマンドベーヴィオールクラスを使用して小さなサンプルを書きましたが、次のXAMLを使用してTreeViewItemのiScollapsedイベントにコマンドを添付することができました。

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="local:CommandBehavior.TheCommandToRun" Value="{Binding MyCommand}"/>
            <Setter Property="local:CommandBehavior.RoutedEventName" Value="Collapsed"/>
        </Style>
    </TreeView.ItemContainerStyle>

    <TreeViewItem Header="Item">
        <TreeViewItem Header="Item">
            <TreeViewItem Header="Item"/>
        </TreeViewItem>
    </TreeViewItem>
</TreeView>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top