How long time does it take to get data in "_mmsize.GetMMSize(txtId.Text)" ?
Change you code to:
System.Diagnostics.Stopwatch t1 = System.Diagnostics.Stopwatch.StartNew();
var data = _mmsize.GetMMSize(txtId.Text);
t1.Stop();
MessageBox.Show(t1.Elapsed);
t1.Restart();
dgMMSize.ItemsSource = data;
t1.Stop();
MessageBox.Show(t1.Elapsed);
Perhaps it is a search in SQL ?
Normal in WPF, you only set ItemsSource one time and uses Filter functions to tell what data DataGrid has to show.
My guess is that "_mmsize.GetMMSize" is doing a SQL search and returns an array or list of data ?