Listbox项目用户控件,用于将事件发送到viewmodel

时间:2014-03-11 10:34:55

标签: wpf mvvm

我创建了一个用户控件,允许对列表框项进行内联编辑。

它是一个TextBlock和一个TextBox在彼此之上。双击列表框项目时,TextBlock将被隐藏,TextBox可见,以便进行编辑。

我的列表框绑定到我的viewmodel的ObservableCollection属性。

问题

我不想:
1.捕捉编辑模式“打开”以告诉ViewModel执行某些操作,例如准备编辑 2.将编辑模式“关闭”以告知ViewModel提交更改/编辑。

我应该为此使用EventHandlers还是让我的用户控制一个ViewModel,然后通过Messaging发送所需的任务?

如果我使用EventHandlers,我需要将事件分配给选定的列表框项目的用户控件 - 我该怎么做?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

顺便说一下,不是隐藏文本块而是显示TextBox,试试这个解决方案

    <TextBox Text="Text" Width="100" Height="100">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Focusable" Value="False"/>
                <Style.Triggers>
                    <EventTrigger RoutedEvent="PreviewMouseDown">
                        <BeginStoryboard>
                            <Storyboard>
                                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="Focusable">
                                    <DiscreteBooleanKeyFrame Value="True"/>
                                </BooleanAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>