powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Загрузка данных в disign-time
25 сообщений из 25, страница 1 из 1
Загрузка данных в disign-time
    #39807438
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
В wpf новичок, кодил на Delphi :)
Прошу помощи, не пойму поведения Visual Studio.
Опишу всю свою движуху, по сколько не пойму где косяк.
И так, решил не мелочиться и начать сразу с познания всех фишек идя от простого к более сложного.До чего дошел. Подключил Entity Framework. Scaffold-DbContext - сгенерил модели из существующей базы. Создал прослойку ViewModelBase, конкретные ViewModel наследуются от нее и в них вся движуха. В коде view-шек пустота, в xaml view-шек штатный datagrid. К примеру Binding - PropertiesView является ListCollectionView в соответствующей ViewModel
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<DataGrid Grid.Row="1"
                  Grid.Column="2"
                  ItemsSource="{Binding  PropertiesView,  Mode=OneWay}"                  
                  AutoGenerateColumns="False"
                  IsReadOnly="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Наименование"
                                    Width="400"
                                    Binding="{Binding Path=Name}"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>


Все шло хорошо, пока я не заполнил тестовыми данными 10 000+ строк.
Все работает великолепно, скорость отличная, пока я не перезапустил Visual Studio (да, работаю в VS 2019, решил раз уж начинать так со свежачка )) может в ней что не так, но не знаю точно , в других пока не проверял)
Так вот во первых, среда зачем то мне вытаскивает данные находясь в Disign Time, ну в общем в конструкторе , еще до запуска. Т.е. в datagrid при загрузке среды мне тянутся все эти 10к записей и среда намертво виснет. Ждал мин 10-15 терпение кончилось. При этом сам Exe работает отлично, спокойно эти 10к грузит. Удаляю эти 10к записей, перезапускаю среду, она начинает работать адекватно.
Собственно вопрос, как запретить загружать эти данные в режиме разработки или что в обще не так, куда смотреть )
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807447
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

Код: c#
1.
2.
3.
#if DEBUG
   //не загружать данные
#endif
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807450
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_subkill_zdm,

Код: c#
1.
2.
3.
#if DEBUG
   //не загружать данные
#endif


Это я так понимаю для run-time? Сам исполняемый повторюсь, что в дэбаге , что в релизе работает отлично. Сама среда тупит. Работать не возможно.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807454
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снимаю вопрос.
Полез в настройки - Инструменты базы данных -Параметры таблиц и запросов и снял галку с переопределить время ожидания там какое то и данные перестали грузиться в режиме разработки в конструкторе.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807513
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

А хотя это не то, но каким то образом сначала помогло. Это не тот конструктор )) Запустил исполнение из среды и опять начало все загружаться в конструкторе XAML :(

Как с этим бороться?
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807614
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снять галочку с опции:
Menu -> Tools -> Options... -> XAML Designer -> General -> Enable XAML Designer
наслаждаться жизнью

В VS 2019 XAML код можно менять прямо во время отладки приложения, да и месяца через 2. Сколько работаю, ниразу через дизайнер ничего в XAML коде не менял, в нём шевельнешь чего не так, весь макап поедете чёрт знает куда
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807654
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesСнять галочку с опции:
Menu -> Tools -> Options... -> XAML Designer -> General -> Enable XAML Designer
наслаждаться жизнью

В VS 2019 XAML код можно менять прямо во время отладки приложения, да и месяца через 2. Сколько работаю, ниразу через дизайнер ничего в XAML коде не менял, в нём шевельнешь чего не так, весь макап поедете чёрт знает куда

До этого я то же дошел, но у меня как раз сейчас этап создания с нуля. И мне как раз код View не столько нужен, точнее совсем не нужен, по сколько все в прослойке ViewModel,а вот к XAML довольно часто пока приходится обращаться ...в поиске интерфейса и т.д..
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807826
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно именно для представления получить признак, что оно в дизайн-моде, то вот

Код: xml
1.
xmlns:compmodel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"


Код: xml
1.
{Binding Path=(compmodel:DesignerProperties.IsInDesignMode)}



(указание свойства Path обязательно, через конструктор не работает)
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807847
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, может я не совсем еще владею терминами и не корректно задаю вопросы. До запуска еще сборки, до всех движений, просто запуск среды разработки. Она мне выводит во все мои xaml данные, я не знаю как это происходит. К примеру в Delphi такое, если компоненту отвечающему за соединение с БД в дизайнтайме установить connection= true, тогда я еще в режиме проектирования могу видеть данные, тут же все совсем не так, у меня нет компонент визуальных и коннект к контексту данных у меня происходит при запуске приложения или других движухах, но не пока я ни чего не делаю.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807851
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Визуальность не при чем, оговорился, невизуального компонента коннекта, но сути не меняет
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807852
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Или если все же мы пончли друг друга, то пжл подскажите где сие прописывается
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807890
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, ты задаешь модель представления как статический ресурс. Соответственно, когда дизайнер пытается отрендерить твое представление, он создает все ресурсы, в том числе и модель, которая лезет в базу.

Соответственно, ты можешь это учитывать разными способами. Вся зависит от того, когда у тебя модель лезет в БД. Свойство, которое тебе нужно, я написал выше. Можешь использовать его хоть в XAML, хоть в модели представления
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807897
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
еще плохо ориентируюсь, но вроде статики я не юзаю, рассудите и подскажите.
К примеру, моя работа со справочником свойств.
Разделил
1. Properties.xaml это моя вьюшка
2. PropertiesModel.cs - прослойка между моделью Properties.cs (сгенерирована EntityFrameWork) и вьюшкой Properties.xaml
3. Во вьюшке Properties.xaml объявляю датаконтекст к вьюмодель
...
<UserControl.DataContext>
<vm:PropertiesModel />
</UserControl.DataContext>
...
и биндю
<DataGrid
ItemsSource="{Binding PropertiesView}"
....
4. PropertiesView в бинде это

public ListCollectionView PropertiesView { get; }

вроде ни каких статиков я не юзаю, что я делаю не так
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807902
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этой схеме уточню, Properties.cs ни как не относится к Properties.cs вьюшки Properties.XAML, у нее своя Properties.xamlcs. C именами возможно не совсем корректно поступил, но только разбираюсь во всей этой кухне
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807912
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

куда мне его это свойство пихнуть? неймспейс прописал :) Но я ей богу не понимаю, я один чтоль такой? ни у кого нет 10к записей и они не лезут при загрузке студии?
Вот мой тест xaml целиком
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"            
             x:Class="Trade4.Pages.Dictonary.View.Properties"
             xmlns:tp="clr-namespace:Trade4.Components"
             xmlns:vm="clr-namespace:Trade4.Pages.Dictonary.ViewModel"
 xmlns:compmodel="clr-namespace:System.ComponentModel;assembly=PresentationFramework"
             mc:Ignorable="d">
    <UserControl.DataContext>
        <vm:PropertiesModel />
    </UserControl.DataContext>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <tp:TopPanel x:Name="tPanel2"
                     Grid.Column="2"
                     Sender="Product" />       
        <DataGrid Grid.Row="1"
                  HorizontalAlignment="Left"
                  Width="400"
                  Grid.Column="2"
                  ItemsSource="{Binding  PropertiesView}"
                  Name="grid1"
                  AutoGenerateColumns="False"
                  IsReadOnly="True"
                  CanUserResizeColumns="False"
                  
                  >
            <DataGrid.Columns>
                <DataGridTextColumn Header="Наименование"
                                    Width="400"
                                    Binding="{Binding Path=Name}">                    
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807925
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm
Код: xml
1.
<vm:PropertiesModel />

вот эта строка создает экземпляр модели. В том числе и при открытии дизайнера
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807928
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmвроде ни каких статиков я не юзаюДа, в данном случае не статик, но ты же не привел код сразу, поэтому пришлось гадать
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807930
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmкуда мне его это свойство пихнуть?в данном случае, наверное, проще запретить вьюмодели лезть в БД, если IsInDesignMode


kill_zdmни у кого нет 10к записей и они не лезут при загрузке студии?Обычно никто не грузит 10к записей в грид - это бессмылсенно. Для этого существует пейджинг, фильтры и т.п.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807931
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того, у DataGridView есть виртуализация, и ее обязательно надо включить и по умолчанию она выключена. Иначе в рантайме тоже будет тормозить
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807949
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Огромное Вам человеческое спасибо!!! я серьезно без иронии. НО.
IsInDesignMode , посмотрел на просторах инета, это мне надо реализовывать этож бред...т.е. скажем я собрался писать что либо, в базе уже есть кол-во записей больше 10к, я еще об этом не знал , реализовал вьюмодели и все упало. КРАСОТА!!!!!!!!!!!!!! в дэлфи у меня таких проблем не было, я контролировал, в режиме разработки, вскывать коннекшн или нет. На крайняк, если забыл False, то это только поменять True на False вне среды... Но все равно познавательно, везде есть свои камни, идем дальше. Еще раз спасибо.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39807951
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prokill_zdmкуда мне его это свойство пихнуть?в данном случае, наверное, проще запретить вьюмодели лезть в БД, если IsInDesignMode


kill_zdmни у кого нет 10к записей и они не лезут при загрузке студии?Обычно никто не грузит 10к записей в грид - это бессмылсенно. Для этого существует пейджинг, фильтры и т.п.
На счет ни кто не грузит это кстати то же вопрос, разные бывают случаи и я с ними встречался, где и более записей были востребованы, но повторюсь, падает не код, не исполняемый файл, он спокойно отображает эти 10к.. среда фризит мертво
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39808033
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmв дэлфи у меня таких проблем не быловоспользуйся своим же советом kill_zdmбагаж обратной силы, от другого ЯП, привычки и осознание того, как это вроде должно выглядеть или где искать корни -не всегда совпадает с с# и wpf в частностии забудь про дельфи. Ты бы еще SQL-Сервер приплел.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39808307
kill_zdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prokill_zdmв дэлфи у меня таких проблем не быловоспользуйся своим же советом kill_zdmбагаж обратной силы, от другого ЯП, привычки и осознание того, как это вроде должно выглядеть или где искать корни -не всегда совпадает с с# и wpf в частностии забудь про дельфи. Ты бы еще SQL-Сервер приплел.
вот в данном ответе в обще ни чего не понял. Забудьте про дэлфи, я уже не там и меня сейчас интересуют проблемы студии. Дэлфи был для контекста и поддержки разговора, а главное, что бы оценить, что проблема именно в среде, по сколько в другоой, таких проблем нет.
Повторюсь. Вопрос - я в среде VS - она мне пытается загрузить все данные в конструторе XAML и умирает при этом. Как от этого избавится.
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39808385
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdm,

не грузить ViewModel в XAML.

Это происходит, вот по этой причине:
Код: c#
1.
2.
3.
    <UserControl.DataContext>
        <vm:PropertiesModel />
    </UserControl.DataContext>



Попробуйте сделать вот так:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    
    <d:Window.DataContext>
        <local:MockViewModel/>
    </d:Window.DataContext>

    <Window.DataContext>
        <local:ViewModel/>
    </Window.DataContext>
    
    <Grid>
        <ListBox ItemsSource="{Binding Items}"/>
    </Grid>
</Window>



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public class ViewModel : IMyModel
{
    public List<string> Items { get; } = Enumerable.Range(0, 100000).Select(p => $"Item {p}").ToList();
}
public class MockViewModel : IMyModel
{
    public List<string> Items { get; } = Enumerable.Range(0, 10).Select(p => $"Item {p}").ToList();
}
...
Рейтинг: 0 / 0
Загрузка данных в disign-time
    #39808532
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill_zdmвот в данном ответе в обще ни чего не понял. Забудьте про дэлфи, я уже не там и меня сейчас интересуют проблемы студии. Дэлфи был для контекста и поддержки разговора, а главное, что бы оценить, что проблема именно в среде, по сколько в другоой, таких проблем нет.
Повторюсь. Вопрос - я в среде VS - она мне пытается загрузить все данные в конструторе XAML и умирает при этом. Как от этого избавится.На вопрос, как от этого избавиться, я ответил выше и считал, что вопрос исчерпан, далее пошла философия о том, что не надо парадигмы одного фреймворка натягивать на другой.
Роман предложил другой вариант, для меня это некоторая новость, и это, видимо, логично
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Загрузка данных в disign-time
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]