Wpf 我可以使用MVVM将字符串数组从视图传递到viewmodel吗?

Wpf 我可以使用MVVM将字符串数组从视图传递到viewmodel吗?,wpf,mvvm,data-binding,Wpf,Mvvm,Data Binding,我有一个场景,我希望能够在UI中收集字符串数组。。。viewmodel不应该关心字符串的收集方式。。。并将该字符串数组传递给viewmodel 是否有一个WPF控件可以绑定到不需要作为itemsSource的字符串数组 我希望viewmodel能够作为一个整体处理阵列。这似乎应该是一件简单的事情,但我只是没有找到解决办法。我正在考虑使用一个文本框,只是在viewmodel中划分字符串并将其拆分 想法 谢谢 这里是一个使用工作绑定和字符串[]的解决方案示例。 主窗口xaml: <Window

我有一个场景,我希望能够在UI中收集字符串数组。。。viewmodel不应该关心字符串的收集方式。。。并将该字符串数组传递给viewmodel

是否有一个WPF控件可以绑定到不需要作为itemsSource的字符串数组

我希望viewmodel能够作为一个整体处理阵列。这似乎应该是一件简单的事情,但我只是没有找到解决办法。我正在考虑使用一个文本框,只是在viewmodel中划分字符串并将其拆分

想法

谢谢


这里是一个使用工作绑定和字符串[]的解决方案示例。 主窗口xaml:

<Window x:Class="SO_app.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="clr-namespace:VM;assembly=VM"
    xmlns:local="clr-namespace:SO_app"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <vm:MainViewModel/>
</Window.DataContext>
<Grid>
    <ListView ItemsSource="{Binding Items}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding .}"/>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>
现在是主视图模型:

namespace VM
{
    public class MainViewModel : BaseViewModel
    {
        public MainViewModel()
        {
            Items = new string[10];
            Items[0] = "First string";
            Items[1] = "Second string";
        }

        private string[] _items;

        public string[] Items
        {
            get { return _items; }
            set { _items = value; OnPropertyChanged("Items"); }
        }
    }
}  
这样,您的绑定将起作用,并且您可以访问视图模型中的集合IU。 如果你需要更多的帮助,请告诉我们。 假设

您可以在解决方案中使用引用并分配它们。 您对绑定有工作理解。
快乐编码

项目资源困扰您的是什么?一个简单的ItemsControl绑定到一个可观察的字符串数组,在item模板中有一个文本框就可以了。只需将“添加”和“删除”按钮绑定到操作可观察数组的命令。您是否试图说要将数组传递给viewmodel以进行处理?在这种情况下,您可能不希望将其绑定到属性,而是将其作为命令的参数传递。我希望数组作为一个单元传递,而不是单独传递,因为它们被添加到ItemsControl。在某些情况下,拖放不一定会将命令附加到触发器。如果是一个项目而不是几个项目,我希望使用不同的UI进行响应。如果您使用的是MvvM,那么您的集合已经在视图模型中,绑定将负责显示项目。看起来您没有在这里使用绑定。如何在UI中填充项目列表?@XAMlMAX,如果我能弄清楚如何将字符串数组作为原子对象绑定,我会使用绑定。在这种情况下,当每个项目添加到列表框时,会调用setter,不是吗?我希望能够将整个数组分配为原子分配,这样只有在分配整个数组时才会触发viewmodel。@DigitalCamel当数组已完成/已满时,是什么阻止您创建按钮来处理它?
namespace VM
{
    public class MainViewModel : BaseViewModel
    {
        public MainViewModel()
        {
            Items = new string[10];
            Items[0] = "First string";
            Items[1] = "Second string";
        }

        private string[] _items;

        public string[] Items
        {
            get { return _items; }
            set { _items = value; OnPropertyChanged("Items"); }
        }
    }
}