Ответы пользователя по тегу WPF
  • Высокоуровневые макросы в C#, есть ли готовые решения?

    @kttotto
    пофиг на чем писать
    Ищите scaffolding для .net, но пишется он на основе t4. Именно так пишутся шаблоны типов проектов для vs.
    Первое, что показал поиск тут.

    Мы у себя на проекте делаем генерацию кода на основе метаданных в бд. Вы можете физически читать нужные Вам файлы, на их основе генерить свой код и выгружать в какое-то место в проекте.
    Ответ написан
  • Как уменьшить расход памяти в DataGrid у WPF?

    @kttotto
    пофиг на чем писать
    Однозначно нужен постраничный вывод. Никто такие объемы за раз не выводит.
    В крайнем случае подгрузка по мере скрола, с удалением из грида верхней части.
    Даже в ширину не обязательно все выводить, можно не самые критичные данные скрыть за кнопочкой "подробнее" и подгружать для просмотра по клику как дополнительные данные.
    Ответ написан
    Комментировать
  • Как обрабатывать данные в wpf textbox, C#?

    @kttotto
    пофиг на чем писать
    Можно двумя способами. Первый, это по старинке в коде сделать обработчик события клика на кнопку и там внутри взять значения из текстбоксов. Второй, это сделать привязку к модели, в замле, через атрибут binding связываете контрол с моделью и на кнопку делаете привязку к команде, которая будет брать данные из модели. Об этом варианте упомянул Станислав Макаров.
    Ответ написан
    1 комментарий
  • Как оптимизировать код?

    @kttotto
    пофиг на чем писать
    Не стоит городить огород из ничего или иначе overhead. У Вас все нормально, только нужно учесть в паре мест возможность эксепшина. Это при приведении as может вернуть null и при чтении ключа, его может не быть.
    var item = lstTasks.SelectedItem as DataRowView;
    if(item == null)
        return throw new NullReferenceExeption(nameof(item));
    var resultId = item.TryGetValue("id", out int id);
    var resultName = item.TryGetValue("name", out string name);
    if(resultId && resultName)
        DeleteTask(id.ToString(), name);
    Ответ написан
    1 комментарий
  • Почему не получается остановить анимацию?

    @kttotto
    пофиг на чем писать
    Дайте ссылку в исходном коде где именно код в том варианте, как привели. То, что я увидел в коде и в Вашем примере, это не одно и тоже. В исходнике запускается и останавливается таймер. Ваш пример вырван из контекста, поэтому по нему трудно что-то понять.

    С гитхаба Ваш код себе не клонировал, но заметил, что ChebyshevMachine это структура, а не класс. Не знаю причины такого выбора, но могу предположить, что именно в этом может быть проблема. Поставьте брейкпоинт на методе StopAnimation и проверьте, что это тот же объект на котором Вы запустили таймер.
    Ответ написан
    2 комментария
  • Как подключить C# WPF app к удаленной базе данных SQL?

    @kttotto
    пофиг на чем писать
    Может быть что угодно: таймаут, права, потеря пакетов. Если стоит нужный провайдер, то можно из VS напрямую подключаться к удаленной бд и vs даже сам конекшн стринг сформирует. Т.е. можно сначала так проверить подключение.
    Ответ написан
  • Какие технологии .NET стоит изучать сейчас?

    @kttotto
    пофиг на чем писать
    Зря Вы так о WPF ) Десктоп востребован до сих пор, загляните в вакансии. Но самое востребованное web конечно. Выше постом правильный список и приоритеты там как есть, упустили только мобильную разработку xamarin, но я это на последнее место поставил бы.

    Я бы посоветовал в web. Вакансий много, работы много, разработчиков не хватает.

    И еще плюсану за комент Толстый Лорри.
    Ответ написан
    1 комментарий
  • Можно ли сохранить в ресурсах или в настройках приложения список (List)?

    @kttotto
    пофиг на чем писать
    Вариант первый, самый простой. Заранее в сетинге сделать поле типа стринг для списка. Список сереализовать в json и сохранять его туда. Ну при чтении читаете строку и десериализуете в свой список.
    var listStr = JsonConvert.SerializeObject(new List<Any>());
    Properties.Settings.Default.MyList = listStr;
    
    listStr = Properties.Settings.Default.MyList;
    var list = JsonConvert.DeserializeObject<List<Any>>(listStr);

    И вариант второй, вообще программно хорошо описан тут
    Ответ написан
    Комментировать
  • Почему другие могут перезаписать файл?

    @kttotto
    пофиг на чем писать
    Не совсем понятен вопрос. Если нужны права доступа пользователя к файлу, то их надо проверять перед чтением файла.

    По идее пока поток открыт, то доступ к файлу будет заблокирован, при попытке получить еще один доступ будет выскакивать эксепшин. Можно посмотреть, после while поставить брекпоинт или thread.sleep и с второго приложения попытаться прочитать файл.

    И если создание потока прячется в using, то нет смысла прятать код в try/finally и руками вызывать close(). Юзинг как раз и предназначен для того, чтоб об этом не беспокоиться, он сам разворачивается в try/finally, в котором поток и закроется.
    Ответ написан
    Комментировать
  • Как развиваться новичку в c# и направлении разработки приложений под win?

    @kttotto
    пофиг на чем писать
    Основные моменты описаны постом ваше, но я тоже от себя добавлю.

    Если хотите развиваться именно в .net, то и учить надо WPF, ado.net, Entity, asp.net mvc, WCF.

    Много читайте, не ограничивайтесь книгами только по С#, есть много всего, без чего не обходится разработка ПО. Это патерны проектирования, процесс разработки, различные инструменты разработки, фреймворки.
    Ответ написан
    2 комментария