Viewmodel对象不接收数据库源更改

时间:2014-06-10 20:22:18

标签: sql-server wpf entity-framework data-binding mvvm

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中相应的行进行更改时,似乎什么都没发生。想法?

0 个答案:

没有答案