我正在使用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