For data binding you should implement INotifyPropertyChanged
https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.inotifypropertychanged?view=net-6.0
https://learn.microsoft.com/en-us/dotnet/desktop/winforms/how-to-implement-the-inotifypropertychanged-interface?view=netframeworkdesktop-4.8
Databindings are not working
I have made a small Project where I have a wcf service and an wpf app to look up weather data in between certain dates. At first, everything was fine, but when I used Databindings, the Datagrid stayed emty. Can someone help me?
//WCF interface:
public interface IService1
{
[OperationContract]
List<WeatherDataContract> GetWeatherData(DateTime start, DateTime end);
}
[DataContract]
public class WeatherDataContract
{
[DataMember]
public int Id { get; set; }
[DataMember]
public DateTime Datum { get; set; }
[DataMember]
public TimeSpan Zeit { get; set; }
[DataMember]
public double Temperatur { get; set; }
[DataMember]
public int Luftdruck { get; set; }
[DataMember]
public int Regen { get; set; }
[DataMember]
public double Wind { get; set; }
[DataMember]
public int Richtung { get; set; }
[DataMember]
public int Feuchtigkeit { get; set; }
}
//WCF service
WeatherDataEntities weatherDataEntities = new WeatherDataEntities();
public List<WeatherDataContract> GetWeatherData(DateTime start, DateTime end)
{
return (from weather in weatherDataEntities.WeatherDatas
where weather.Datum <= end && weather.Datum >= start
select new WeatherDataContract
{
Id = weather.Id,
Datum = (DateTime)weather.Datum,
Zeit = (TimeSpan)weather.Zeit,
Temperatur = (double)weather.Temperatur,
Luftdruck = (int)weather.Luftdruck,
Regen = (int)weather.Regen,
Wind = (int)weather.Wind,
Richtung = (int)weather.Richtung,
Feuchtigkeit = (int)weather.Feuchtigkeit
}).Take(100).ToList();
}
//XAML:
<DataGrid x:Name="weatherDataGrid" HorizontalAlignment="Left" Height="355" Margin="21,35,0,0" VerticalAlignment="Top" Width="742" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Id}"/>
<DataGridTextColumn Binding="{Binding Datum}"/>
<DataGridTextColumn Binding="{Binding Zeit}"/>
<DataGridTextColumn Binding="{Binding Temperatur}"/>
<DataGridTextColumn Binding="{Binding Luftdruck}"/>
<DataGridTextColumn Binding="{Binding Regen}"/>
<DataGridTextColumn Binding="{Binding Wind}"/>
<DataGridTextColumn Binding="{Binding Richtung}"/>
<DataGridTextColumn Binding="{Binding Feuchtigkeit}"/>
</DataGrid.Columns>
</DataGrid>
<DatePicker SelectedDateChanged="Date_SelectedDateChanged" x:Name="fromDate" HorizontalAlignment="Left" Margin="75,10,0,0" VerticalAlignment="Top" Width="150"/>
<DatePicker SelectedDateChanged="Date_SelectedDateChanged" x:Name="toDate" HorizontalAlignment="Left" Margin="287,9,0,0" VerticalAlignment="Top" Width="136"/>
<Label Content="From" HorizontalAlignment="Left" Margin="33,8,0,0" VerticalAlignment="Top"/>
<Label Content="To" HorizontalAlignment="Left" Margin="260,10,0,0" VerticalAlignment="Top"/>
//xaml.cs
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
public List<ServiceReference1.WeatherDataContract> WeatherData
{
get
{
return client.GetWeatherData(fromDate.SelectedDate ?? DateTime.MinValue, toDate.SelectedDate ?? DateTime.MaxValue).ToList();
}
}
public MainWindow()
{
InitializeComponent();
}
private void Date_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
weatherDataGrid.ItemsSource = WeatherData;
}
}
12 answers
Sort by: Most helpful
-
Olaf Helper 40,736 Reputation points
2022-05-23T07:57:07.22+00:00 -
Simon Aigner 1 Reputation point
2022-05-23T09:33:53.447+00:00 namespace LinqExample
{
public partial class MainWindow : Window
{public MainWindow() { InitializeComponent(); LoadData(); } public void LoadData() { XElement xElement = XElement.Load(@"..\..\cd_catalog.xml"); XNamespace ns = "http://tempuri.org/CDCatalog.xsd"; var query = from email in xElement.Descendants(ns + "CD") where email.Element(ns + "TITLE").Value.Contains(fromPersonTextBox.Text) select new CDCatalog() { Title = email.Element(ns + "TITLE").Value, Artist = email.Element(ns + "ARTIST").Value, Country = email.Element(ns + "COUNTRY").Value, Company = email.Element(ns + "COMPANY").Value, Price = email.Element(ns + "PRICE").Value, Year = email.Element(ns + "YEAR").Value }; emailDataGrid.ItemsSource = query; } private void OnTextChanged(object sender, TextChangedEventArgs e) { LoadData(); } }
}
-
Simon Aigner 1 Reputation point
2022-05-23T09:47:27.713+00:00 ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
public MainWindow()
{
InitializeComponent();
}private void Bbutton_Click(object sender, RoutedEventArgs e) { DdataGrid.ItemsSource = client.GetPerson(TtextBox.Text); }
-
Simon Aigner 1 Reputation point
2022-06-22T20:46:23.317+00:00 CD
public partial class frmCDVerwaltung : Form
{
public frmCDVerwaltung()
{
InitializeComponent();
sqlDataAdapter1.Fill(dataSet11, "CD");
}private void btnRecreate_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { dataSet11.Clear(); dataSet11.ReadXml(openFileDialog1.FileName); clearDatabase(); updateDatabase(); } } private void btnUpdate_Click(object sender, EventArgs e) { dataSet11.Clear(); sqlDataAdapter1.Fill(dataSet11, "CD"); } private void btnDelete_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows != null) { foreach (DataGridViewRow dr in dataGridView1.SelectedRows) { dataGridView1.Rows.Remove(dr); } updateDatabase(); } } private void clearDatabase() { SqlCommand cmd = new SqlCommand("delete from CD where 1 = 1", sqlConnection1); sqlConnection1.Open(); cmd.ExecuteNonQuery(); sqlConnection1.Close(); } private void dgvCD_CellEndEdit(object sender, DataGridViewCellEventArgs e) { updateDatabase(); } private void updateDatabase() { sqlDataAdapter1.Update(dataSet11, "CD"); } private void dgvCD_CellEnter(object sender, DataGridViewCellEventArgs e) { updateDatabase(); } }
-
Simon Aigner 1 Reputation point
2022-06-22T21:33:53.487+00:00