【问题标题】:Listbox Item user control to send events to viewmodel列表框项用户控件向视图模型发送事件
【发布时间】:2014-03-11 10:34:54
【问题描述】:

我创建了一个允许内联编辑列表框项目的用户控件。

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

我的列表框绑定到我的视图模型的 ObservableCollection 属性。

问题

我不想:
1. 开启编辑模式,告诉 ViewModel 做某事,即准备编辑
2. 将编辑模式设置为“关闭”以告诉 ViewModel 提交更改/编辑。

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

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

感谢阅读。

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    顺便说一句,不要隐藏文本块并显示 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>
    

    【讨论】:

    • 感谢更简洁的方法。我如何让文本框看起来/功能像文本块?现在它们都是可编辑的。 @迈克尔
    • 有什么问题?如果您想要文本框但外观不同,则可以使用默认模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2011-05-16
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2023-02-14
    • 2011-02-22
    相关资源
    最近更新 更多