【发布时间】:2017-10-02 15:40:06
【问题描述】:
我在显示表格中的数据时遇到问题。该表有一个字段PositionName 并在Entity Framework Code First 中构建。为了显示我正在使用带有 MVVM 模式元素 DataGrid 的 WPF。 xaml 中的绑定代码:
<DataGrid AutoGenerateColumns="False"
x:Name="PositionGrid" Margin="2 2 2 2"
ItemsSource="{Binding Source = PositionCollection}"
SelectedItem="{Binding ThePosition, Mode=TwoWay}"
SelectionMode="Single" Height="235">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PositionName}"
Header="Назва професії"/>
</DataGrid.Columns>
</DataGrid>
窗口后面的代码
public AddPositionView()
{
InitializeComponent();
DataContext = new PositionViewModel();
}
PositionViewModel 是 ViewModel,代码如下:
public PositionViewModel()
{
_db = new SalDBContext();
ThePosition = new Position();
_poclog = new PositionLogic();
PositionCollection = new ObservableCollection<Position>(_poclog.Get());
}
db 是处理表格的上下文,ThePosition - 是模型类,_poclog 它基本上是具有处理表单的逻辑的类。 Logic 类具有显示数据的下一个实现。
internal IEnumerable<Position> Get()
{
return _dbContext.Positions.ToList();
}
代码没有任何例外地工作,它显示表单但网格是空的。调试时PositionCollection 包含表中的所有元素。当这一切都转到调用窗口的代码时,它显示空窗口。在下一个代码之后,它显示空窗口。
private void PositionShow_Button_Click(object sender, RoutedEventArgs e)
{
AddPositionView posview = new AddPositionView();
posview.Show();
}
根据调试,当我将停止点放在AddPositionView 上时,它会抛出所有视图模型类,PositionColection 包含 db 中的所有元素,但随后又回到AddPositionView,posview 变为空。为什么会发生?并且 DataGrid 显示空表。
感谢您的帮助。
【问题讨论】:
标签: c# wpf entity-framework mvvm datagrid