我需要找到的是当文本框的值发生变化或者我的datatemplate项目中的下拉列值发生变化时,我需要在我的ViewModel.cs中收到通知。
因此,基本上当用户编辑列表框中的文本框时,视图模型将在值发生变化时收到通知。
原因是我需要遍历所有条目并更新内容作为列表框的datatemplate更改内的项目。
任何建议?
我的XAML中有以下内容。
<ListBox x:Name="EntriesListBox"
ItemsSource="{Binding Path=Entries}"
Grid.Row="1">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox x:Name="EntriesPropertyName"
Width="215"
Margin="0,0,5,0"
SelectedItem="{Binding Path=Property, Mode=TwoWay}"
ItemsSource="{Binding Source={StaticResource DataContextProxy},Path=DataSource.EntityTypeProperties}" />
<TextBox x:Name="EntriesPropertyValue"
Width="215"
Margin="0,0,5,0"
Text="{Binding Path=Value, Mode=TwoWay, BindsDirectlyToSource=True}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
以下是我的VM(ViewModel.cs)
public ObservableCollection<Entry> Entries { get; set; }
以下是我的业务对象(Entry.cs)
public class Entry
{
public PropertyItem Property { get; set; }
public string Value { get; set; }
}
答案 0 :(得分:1)
在您的绑定上,设置UpdateSourceTrigger ...同时实施INotifyPropertyChanged
答案 1 :(得分:0)
如果您已正确设置视图模型类(通过实现INotifyPropertyChanged),您可以执行以下操作:
<TextBox x:Name="EntriesPropertyValue"
Width="215"
Margin="0,0,5,0"
Text="{Binding Path=Value, Mode=TwoWay, BindsDirectlyToSource=True, UpdateSourceTrigger=PropertyChanged}" />
答案 2 :(得分:0)
这似乎有效。有什么理由不这样做吗?
private void EntriesPropertyValue_TextChanged(object sender, TextChangedEventArgs e)
{
(sender as TextBox).GetBindingExpression(TextBox.TextProperty).UpdateSource();
this.ViewModel.UpdateFinalQuery();
}