我尝试过SO,PropertyChanged,collectionviewsource,几种绑定方法,取消屏幕导体的视图缓存的不同答案(我认为是有问题的)
谢谢。
datagridViewModel:
public class MeldListViewModel : Screen
{
private tblMeldungen _Meldung;
private BindableCollection<tblMeldungen> _Meldungen =new BindableCollection<tblMeldungen>();
Schichtbuch_Entities context = new Schichtbuch_Entities();
public MeldListViewModel()
{
GetData();
}
private void GetData()
{
context.tblMeldungen.Load();
_Meldungen = new BindableCollection<tblMeldungen>();
foreach (var item in context.tblMeldungen)
{
_Meldungen.Add(item);
}
//_Meldungen = context.tblMeldungen.Local();
Refresh();
}
/../
public BindableCollection<tblMeldungen> DisplayMeldungen
{
get { return _Meldungen; }
set
{
_Meldungen = value;
NotifyOfPropertyChange(() => DisplayMeldungen);
}
}
public override object GetView(object context = null)
{
return null;
public void Resync()
{
GetData();
//_Meldungen = null;
//_Meldungen = new BindableCollection<tblMeldungen>(context.tblMeldungen);
NotifyOfPropertyChange(() => DisplayMeldungen);
Refresh();
}
/../
datagridView:
/../
<Button Grid.Column="1" Margin="10" x:Name="Resync" Style="{StaticResource RefreshButtonStyle}"/>
/../
<!-- Trennlinie -->
<Rectangle Grid.Row="1">
<Rectangle.Fill>
/../
</Rectangle>
<!-- Liste der Meldungen -->
<DataGrid x:Name="DisplayMeldungen" Grid.Row="2" Grid.RowSpan="2" AutoGenerateColumns="False" SelectedItem="{Binding Meldung , Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" SelectionMode="Single" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTemplateColumn Header="MeldungsID">
/../
</DataGridTemplateColumn>
<DataGridTextColumn Header="Anlage" Width="60" Binding="{Binding MeldungAnlage}"/>
<DataGridTextColumn Header="Firma" Width="80" Binding="{Binding MeldungFirma}"/>
<DataGridTextColumn Header="Start" Binding="{Binding MeldungStart, StringFormat=dd.MM.yyyy HH:mm}"/>
<DataGridTextColumn Header="Ende" Binding="{Binding MeldungEnde, StringFormat=dd.MM.yyyy HH:mm}"/>
<DataGridTextColumn Header="Grund" Width="200" Binding="{Binding MeldungGrund}"/>
<DataGridTextColumn Header="Ersteller" Width="100" Binding="{Binding MeldungErsteller}" />
<DataGridTextColumn Header="Art der Meldung" Width="100" Binding="{Binding MeldungArt}"/>
<DataGridTextColumn Header="Reduzierungswert" Binding="{Binding MeldungReduzierung}"/>
</DataGrid.Columns>
</DataGrid>
AppViewModel:
public class AppViewModel : Conductor<object>.Collection.OneActive
{
MeldListViewModel MeldListItem;
MeldFormViewModel meldForm;
MainMenViewModel MainMenItem = new MainMenViewModel() { DisplayName = "Hauptmenü" };
MeldungenViewModel MeldungenItem = new MeldungenViewModel() { DisplayName = "Menü Meldungen" };
/../
public void ShowMeldList()
{
MeldListItem = new MeldListViewModel() { DisplayName = "Meldungen" };
ActivateItem(MeldListItem);
}
public void ShowMeldForm(int meldungsID)
{
//DeactivateItem(MeldListItem, true);
meldForm = new MeldFormViewModel(meldungsID) { DisplayName = "Meldung ändern" };
ActivateItem(meldForm);
}
/../
我希望代码还可以,语言是德语。