ورود

View Full Version : سرعت dataGrid م خیلی پایینه. توی الگوی mvvm چکار کنم؟



سیدسبحان
یک شنبه 06 دی 1394, 20:27 عصر
سلام به همه دوستان
مخصوصا اونایی که من همش مزاحمشون میشم

اقا من کد ویومدلم اینه:


public ObservableCollection<Person> _persons { get; set; }
public AllPersonViewModel()
{

using (var db = new HamzeNejadEntities())
{
_persons = new ObservableCollection<Person>(db.People.ToList());
{
{


حالا کد xaml مربوط به دیتا گریدم هم این هست:


<DataGrid

ItemsSource="{Binding _persons}"
Margin="10,10,0,6" Grid.ColumnSpan="2"/>


این فرم مربوط که دیتا گریدم هم داخلش هست، با Command زیر باز میشه:
(میخام بگم dataContext شو چطوری تنظیم کردم)

public void Execute()
{
var w = new AllUserForm();
var vm=new AllPersonViewModel();
w.DataContext = vm;
w.WindowStartupLocation=WindowStartupLocation.Cent erOwner;
w.Title = "گزارش گیری";
w.Show();
}


حالا سوالم اینه:
نزدیک 160 تا سطر دارم توی دیتابیسم.
داخل دیتاگریدم وقتی که با scrollbar میخام دوتا سه تا سطر رو بیام پایین یا بالاتر، یهو هنگ میکنه. نزدیک یک یا دو دقیقه باید صبر کنم تا نشونشون بده.

باید چکار کنم؟؟

ali_md110
دوشنبه 07 دی 1394, 11:21 صبح
باید WPF virtualization رو فعال کنید
یا بیاید ارتفاع دیتاگراید رو دستی بدید تا اسکرول اون به یک مقدار خاض ست بشه



<DataGrid ItemsSource="{Binding MyList}"
Height="{Binding Path=RowDefinitions[1].ActualHeight, RelativeSource={RelativeSource AncestorType=Grid}}"



یا اگر باز همینجوری بود از روش زیر استفاده کنید


<DataGrid ItemsSource="{Binding MyList}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.CanContentScroll="True"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<DataGrid.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel
IsVirtualizing="True"
VirtualizationMode="Recycling" />
</ItemsPanelTemplate>
</DataGrid.ItemsPanel>
<DataGrid.Columns>

</DataGrid.Columns>
</DataGrid>