具有复制粘贴功能的ListBox

时间:2017-03-08 18:23:49

标签: wpf xaml mvvm listbox copy-paste

我正在使用MVVM方法,我的UI需要向用户提供一个简单的复制粘贴区域(类似TextBox),一旦用户输入文本,我需要将所有换行符分隔的文本转换为列表项 - 列表项,因为我想要突出显示有错误的单个项目(如果有的话)。

对于用户来说应该是无缝的 - 用户应该只看到列表项,并且应该能够稍后编辑它们。

因此,基本上我需要一个ListBox(对于程序员),其作用类似于文本框(对于用户而言)。我怎样才能做到这一点?

我使用带有TextBox&的网格实现了这个功能。 ListBox位于同一行,但有一些重叠,以便用户可以在文本框中粘贴文本,一旦用户输入文本,viewmodel就会将换行符分隔为列表项。它正在工作,但我面临很多问题(如清除文本框等)。如果有的话,我正在寻找更有效的解决方案。以下是xaml的代码片段:

 <Grid>
        <TextBox AcceptsReturn="True" VerticalAlignment="Stretch" BorderBrush="Transparent"
                 Text="{Binding TextBoxData, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}">
            <TextBox.InputBindings>
                <KeyBinding Key="Enter" Command="{Binding OnNewLineCommand}"/>
            </TextBox.InputBindings>
        </TextBox>
        <ListBox ItemsSource="{Binding ListBoxItems}" Margin="0,20,0,0" BorderBrush="Transparent" FocusVisualStyle="{x:Null}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding}" BorderBrush="Transparent"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListBox>
    </Grid>

谢谢,

RDV

0 个答案:

没有答案