WPF,MVVM,数据绑定和实体框架的新手,所以提前道歉。
我正在尝试通过viewmodel将WPF控件绑定到我的数据库生成的模型对象。我可以通过键入文本框来更改数据库值,但是对数据库行的任何直接更改似乎都不会触发PropertyChanged事件。至少它们没有反映在我的viewmodel对象中。我已经在我的Entity Framework生成的类上实现了iNotifyPropertyChanged:
public partial class GenGround : INotifyPropertyChanged
{
public double ClMax
{
get { return (double)this.clMax; }
set
{
this.clMax = (float)value;
MainWindow.db.SaveChanges();
OnPropertyChanged("ClMax");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string Property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(Property));
}
}
}
我有一个列表框:
<DataTemplate x:Key="missionLegTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
<ListBox x:Name="missionList" SelectionChanged="missionList_SelectionChanged" Grid.ColumnSpan="2" ItemsSource="{Binding Mode=OneWay}" ItemTemplate="{DynamicResource missionLegTemplate}" />
private void MainWindow1_Loaded(object sender, RoutedEventArgs e)
{
this.missionList.ItemsSource = _CurrentMissionProfile.MissionLegs;
}
“MissionLegs”是一个附加到数据库的MissionLeg对象的ObservableCollection。此列表框的选定项应告诉文本框要获取和设置的属性。文本框:
<TextBox x:Name="velocityBox" Text="{Binding Mode=TwoWay,Path=SelectedItem.Velocity, ElementName=missionList}" IsEnabled="False" />
正如我所说,这似乎是写入数据库,但是当我对SSMS中相应的行进行更改时,似乎什么都没发生。想法?