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