我的xaml(View)中有ListView,其itemsSource绑定到Observable集合。
MyView的:
<ListView x:Name="TestVariables"
ItemsSource="{Binding TestVariables}"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="3">
<ListView.ItemTemplate>
<DataTemplate>
<Grid Background="White" Width="350">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="175"/>
<ColumnDefinition Width="175"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0"
Grid.Column="0"
Text="{Binding Key}"/>
<TextBox Grid.Row="0"
Grid.Column="1"
Text="{Binding Value}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
问题:因此,当我运行我的应用程序并更改我的TextBox值时,如何在我的视图模型中获得仅具有这些更改的新集合?我想在我的代码中的某处使用该新集合。换句话说,我如何通知我的viewmodel这些更改?
例如,如果我运行这个,我会得到:23岁, 性女, 身高2
如果我将文本框更改为:24岁, 性别男, 身高2
我想在我的viewModel中构建一个新的集合:24岁, 性别男性
这是我的ViewModel:
公共类MainViewModel:ViewModelBase { public ObservableCollection TestVariables {get;组; }
public MainViewModel()
{
TestVariables= new ObservableCollection<TestVariable>
{
new TestVariable() {Key = "age", Value = 23},
new TestVariable() {Key = "sex", Value = "female"},
new TestVariable() {Key = "height", Value = 2}
};
}
}
TestVarible类:
public class TestVariable
{
public string Key { get; set; }
public object Value { get; set;}
}
}
由于
答案 0 :(得分:1)
您也应该通知TestVariables属性的更改。然后在UI上将绑定模式设置为TwoWay绑定。
private ObservableCollection<TestVariable> testVariables;
public ObservableCollection<TestVariable> TestVariables
{
get{return testVariables;}
set
{
if(testVariables != value)
{
testVariables = value;
OnPropertyChanged("TestVariables");
}
}
}