通过XAML中的鼠标事件更改ViewModel属性

时间:2015-01-20 09:02:50

标签: wpf xaml mvvm

我在画布上有很多项目。当我点击一个,我希望它设置它的"选择" property为true,在其上显示一个装饰,并设置" Selected"对其他项目的属性为false。

在我的XAML中我有这个:

                                           

            <i:Interaction.Behaviors>
                <behaviors:DragOnCanvasBehavior
                    DraggableItem="{Binding}">
                    <behaviors:DragOnCanvasBehavior.MouseOverAdornerTemplate>
                        <DataTemplate>
                            <Border
                                DataContext="DraggableBorder"
                                BorderBrush="#B0000000"
                                BorderThickness="3"
                                Width="{Binding Path=Width}"
                                Height="{Binding Path=Height}"></Border>
                        </DataTemplate>
                    </behaviors:DragOnCanvasBehavior.MouseOverAdornerTemplate>
                    <behaviors:DragOnCanvasBehavior.SelectedAdornerTemplate>
                        <DataTemplate>
                            <Border
                                DataContext="DraggableBorder"
                                BorderBrush="#FF34619E"
                                BorderThickness="3"
                                Width="{Binding Path=Width}"
                                Height="{Binding Path=Height}"
                                Visibility="{Binding Path=Selected, Converter={StaticResource BooleanToVisibilityConverter}}"></Border>
                        </DataTemplate>
                    </behaviors:DragOnCanvasBehavior.SelectedAdornerTemplate>

                    <i:Interaction.Triggers>
                        <!-- Dragging and mouse over/out events like this : -->
                        <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                            <i:InvokeCommandAction CommandName="StartDrag" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </behaviors:DragOnCanvasBehavior>
            </i:Interaction.Behaviors>
        </Border>
    </AdornerDecorator>
</DataTemplate>

我想在行为事件中的某个地方,我应该在视图模型&#34;选择&#34;财产已经改变,但我不知道该怎么做......

2 个答案:

答案 0 :(得分:1)

考虑使用带有利用画布的控件模板的列表视图。

然后使用selecteditem属性。

答案 1 :(得分:0)

我已经屈服了,我现在通过行为直接处理鼠标事件。

我仍然遇到一些问题:Bind adorner property to viewmodel property