Ответы пользователя по тегу C#
  • Как идентифицировать subItem в List View в C#?

    Nipheris
    @Nipheris Куратор тега C#
    > Как вообще в C# присваивание переменных происходит, в java вообще все отлично там все является указателем, и сохранить ссылку на какой то элемент очень просто, как с этим тут?
    Читайте про reference-types (типы-ссылки) и value-types (типы-значения) - от этого и зависит семантика присваивания.

    О каком ListView речь идет? WPF или WinForms?
    Ответ написан
  • Как сделать шаблон окна в WPF?

    Nipheris
    @Nipheris Куратор тега C#
    А как пробовали? Если добавлять контролы из Code-behind, по идее должно работать.
    Ответ написан
  • Где хранить временные данные в ASP.NET MVC?

    Nipheris
    @Nipheris Куратор тега C#
    > Сразу в БД?
    Почему нет? Только не в основную, а например в Redis (polyglot persistence)
    Вы спросите нафига вам оно? Вот вам аргумент :).
    Ответ написан
    1 комментарий
  • Какие технологии используются сейчас для работы с БД?

    Nipheris
    @Nipheris Куратор тега C#
    ORM-ку сверху накиньте, вместо прямого ADO.Net, и будет вам современные технологии. В тренде, очевидно, Entity Framework, хотя NHibernate - нестареющая классика.
    Можете заморочиться над архитектурой, вплоть до разделения на клиент и сервер - тогда будет место и для Web API.
    Или другой вариант - подтащить документую БД, хотя для бухгалтерии не факт что это хорошее решение (разве что в пару к реляционной, для хранения характеристик ваших товаров).
    Ответ написан
    Комментировать
  • Возможно ли построить интерфейс сайта полностью кодом C#?

    Nipheris
    @Nipheris Куратор тега C#
    Просто крайне негативно отношусь к html и xaml, хочется избавиться от этих разметок.


    Может тогда попробуете jade-lang.com или slim-lang.com (или еще 100500 аналогов)?
    Я так понимаю вас синтаксис не устраивает? Языки-наследники SGML вполне неплохо подходят для иерархического контента, т.к. для этого и создавались. Так что обычно если что-то не нравится, так это теги и скобочки)
    Ответ написан
  • Как в ItemsControl выполнить метод класса источника при возникновении события (например щелчка мышью)?

    Nipheris
    @Nipheris Куратор тега C#
    Я так понимаю, раз Метод1 у вас во viewmodel, то в нем бизнес-логика (а не логика представления). Если так, то советую провернуть это все через Command:
    1) в родительской viewmodel (та, которая список) делаете команду с одним параметром (в примере: DoStrangeThingCommand);
    2) с помощью EventTrigger делаете так, чтобы по событию нажатия л.к.м. на текстблоке дергалась эта команда;
    3) в качестве параметра команды передаем текущую привязку (т.е. выбранный элемент в списке);
    4) в команде собственно дергаем Метод1
    5) профит

    <DataTemplate ... >
    	<TextBlock>
    		<i:Interaction.Triggers>
    			<i:EventTrigger EventName="MouseLeftButtonDown">
    				<i:InvokeCommandAction
    					Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}},
    						Path=DataContext.DoStrangeThingCommand}"
    					CommandParameter="{Binding}" />
    			</i:EventTrigger>
    		</i:Interaction.Triggers>
    	</TextBlock>
    </DataTemplate>
    Ответ написан
    4 комментария
  • Как быть с моделями в ASP.NET MVC?

    Nipheris
    @Nipheris Куратор тега C#
    Короткий ответ на ваш вопрос: Code First, Mappings.
    Длинный ответ: вам действительно нужно разобраться, что называть моделью.
    Лично я убежден, что модельные классы, представляющие из себя DTO - это по-любому anemic data model, а анемичная модель - это в 90% случаев нехорошо. Поэтому, у вас два варианта: отказаться от генерации "по картинке" в пользу Code First (рекомендую), либо пойти по пути Евгений Колегов - сказать, что EF-овская модель - это и не модель, а так, граф примитивных объектов с get/set-ами, а настоящая модель - вот она, обертка над ними, с реальной бизнес-логикой и т.д.

    > По сути эти модели - это DTO то есть просто объекты содержащие только данные. А как быть с логикой обработки этих данных? Она должна быть в контроллерах что ли?
    Ну это тот же самый вопрос: нормальная модель должна содержать логику.
    > в Asp.net mvc должны быть "тонкими", то есть не содержать особой логики.
    В контроллере - минимум, там логика специфичная не для бизнес-процессов, а для процесса работы самого web api, т.е. определение того, что нужно сделать с бизнес-сущностями, чтобы удовлетворить запрос.
    > Или надо писать еще и дополнительные контроллеры в которых будет сосредоточена логика работы с моделями?
    не стоит, думаю в вашей задаче такой дополнительный слой совершенно излишен.

    Резюме: модель вполне может и должна следовать обычным правилам ООП, известным уже лет 40 - данные и логика их обработки должны быть рядом друг с другом. Отделение бизнес-логики отдельно от модели - это такой своеобразный фетиш разбиения приложения на много-много слоев (на самом деле выделение веб-сервиса с четко определенным api - уже неплохой слой). Если вы чувствуете себя некомфортно от того, что у вас модель без логики, и не можете ее туда поместить - нужно менять инстурменты или вариант их использования. Первые версии EF - это первый блин комом, отсутствие поддержки Code First и нормальных маппингов считалось серьезной проблемой. Сейчас это уже давно в прошлом.
    Бонусные варианты, если вы не связаны ограничениями:
    1) генерация ТАБЛИЦ ПО КЛАССАМ, а не маппинг классов на таблицы: для кого-то этот вариант очень даже подходит, плюс упрощает менеджмент схемой БД: у вас всегда есть один источник сведений о схеме данных - это ваша модель. По ней можно всегда получить текущую SQL-схему;
    2) если вам нравится отдельно следить за объектной моделью и за SQL (я вот именно так люблю), можете посмотреть и на другие ORM - NHibernate вполне себе торт. Сейчас конечно EF более популярна, ибо стандартная и раскрученная, но я 4 года назад выбрал NH для своего проекта из-за отсутствия неприятных ограничений (например, NH умеет мапать даже на приватное поле, а EF тогда не умел) и из-за наличия вменяемых механизмов маппинга.
    Ответ написан
    Комментировать
  • Как реализовать веб-сервис двухфакторной аутентификации?

    Nipheris
    @Nipheris Куратор тега C#
    OAuth?

    OAuth provides client applications a 'secure delegated access' to server resources on behalf of a resource owner.
    Ответ написан
    Комментировать
  • Как построить полную сетку из не полной?

    Nipheris
    @Nipheris Куратор тега C#
    Тоже не совсем поменял что такое неравномерная сетка, может вам просто брать среднее из ближайших значений в той точке, где значения нет? Ну или как-то иначе интерполировать..
    Ответ написан
    Комментировать
  • Изучение разработки приложений WPF C#?

    Nipheris
    @Nipheris Куратор тега C#
    Добавлю к Aлександр, что очень важно разобраться в MVVM подходе сразу, т.к. button_Click это в общем случае не Right Way в WPF). Фишка в том, что сама подсистема, без фреймворка, не предоставляет толковых средств для поддержания этого паттерна (есть лишь интерфейсы взаимодействия, по которым сложно сразу понять, как их правильно использовать) - нет никаких ViewModelBase и прочего, что есть во фреймворках или появляется велосипедом в каждом проекте. Когда найдете книгу с хорошим описанием этого паттерна - тогда можно и все остальное читать.
    Ответ написан
    Комментировать
  • Что за ошибка Метрики при сборке пакета?

    Nipheris
    @Nipheris Куратор тега C#
    Спасибо за суммон.
    В этой сборке действительно есть тип со странным именем, которое даже толком не парсится (возможно, содержит символы юникода):
    87d35e4abf0a4629b83d87a242fc21de.png
    Вероятно это имя дал типу обфускатор, который использовали в Яндексе для этой сборки (а его использовали, судя по именам методов и полей вида A, b, C и т.д.)
    Думаю, об этой проблеме нужно отписать Яндексу (если конечно для этого пакета не существует опенсорсных исходников, что сомнительно).
    Ответ написан
    1 комментарий
  • При помощи чего разрабатываются интерфейсы для Desktop-приложений?

    Nipheris
    @Nipheris Куратор тега C++
    > Battle.net
    вот очень кстати сказали. Открываем <путь установки>\Battle.net.XXX\, видим:
    2406a0538fd449489e2ffaf0a7f2f05e.png
    Ну вы поняли :)
    А красиво и стильно, это потому что у компании есть деньги на:
    1) специалистов, которые знают и С++, и Qt достаточно хорошо, чтобы придавать приложениям желаемый вид
    2) дизайнеров, которые дадут несколько идей, из которых потом можно выбрать ту, которую реально реализовать, чтобы выглядело на "ура".
    На данный момент Qt это лучшее что я могу посоветовать для плюсов, т.к. с ним реально можно добиться результатов, bnet клиент вам в пример. Приемлемо это для вас или нет - решать вам, меня разработка UI на плюсах нисколько не отталкивает, но это уже личный опыт.
    Ответ написан
    8 комментариев
  • Как Реализовать многослойный canvas с поддержкой прозрачности слоев?

    Nipheris
    @Nipheris Куратор тега C#
    Вам нужно определиться с количеством ресурсов, которое вам доступно. Безусловно, редактор с ядром на opengl будет очень шустрым (вон сейчас фотошоп активно пользуется аппаратным ускорением), но не факт, что вам хватит времени и умения использовать его напрямую.
    С другой стороны, вы можете попробовать написать нужные вам обработки самостоятельно, в виде обычного CPU-кода, но без использования WinForms для чего либо, кроме вывода изображения. Вы видимо пытались применить панельки для работы со слоями, это конечно будет крайне неудобно, и многое чего не выйдет. Советую попробовать поработать с этими задачами (смешение слоев, работа с прозрачностью и т.д.) самому, т.е. использоват только один picturebox для вывода готовой картинки.
    Ответ написан
    1 комментарий
  • Как создать XPath запрос для Polyline.Points?

    Nipheris
    @Nipheris Куратор тега C#
    К сожалению, забиндить XPath-запрос, возвращающий несколько узлов, на какое-либо свойство типа, не имеющего отношения к XML-структуре документа (например, на свойство типа string) невозможно, т.к. это потребует агрегации этого множества узлов в единственное значение (строку), а как делать эту агрегацию в общем случае - непонятно. Т.е. неясно, как собрать ОДНУ строку из нескольких значений атрибутов Value.
    Могу порекомендовать вам два пути:
    1) превратить ВСЕ содержимое узла Points в одну строку. Вот работающий вариант:
    <Window x:Class="PolygonTest.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <XmlDataProvider x:Key="ChartData">
                <x:XData>
                    <Root xmlns="">
                        <Chart>
                            <Title>График 1</Title>
                            <Points Color="Black">
                                1,1 10,10
                                40,30 20,20
                                15,87
                            </Points>
                        </Chart>
                    </Root>
                </x:XData>
    		</XmlDataProvider>
    	</Window.Resources>
        <Grid Name="grid" DataContext="{Binding Source={StaticResource ChartData}}">
            <Polygon Name="polygon" Points="{Binding XPath=/Root/Chart[1]/Points}" Stroke="#FFD33D3D" />
        </Grid>
    </Window>


    2) обработать XML вручную, в обход WPF и каких-либо привязок, во viewmodel-и самому собрать нормальную PointCollection, выставить эту коллекцию как свойство и забиндиться к нему из полигона обычным биндингом

    Вот обсуждение проблемы на SO, похоже ваш случай, только проще. В ответе пишут, что не помогает даже попытка применить конвертер, так как множество узлов обрезается до самого первого сразу же.
    Ответ написан
    Комментировать
  • Как убрать таблицу в RichTextBox (Visual Studio)?

    Nipheris
    @Nipheris Куратор тега C#
    Посоветую поискать, как заставить текстбокс принимать только plain-text при вставке. Не уверен, что есть такая настройка, но по сути это то, чего нужно добиться. В зависимости от типа контента, который готова принять программа, Excel отдаст нужное содержимое.
    Ответ написан
    Комментировать
  • Есть ли в Python и Go делегаты?

    Nipheris
    @Nipheris Куратор тега C#
    Если используете терминологию C#, то и поставили бы тег, больше бы ответили.
    Если нет, пропустите этот ответ.

    В большинстве языков возможность работать с функциями как со значениями называется first-class function values или first-class function objects, а возможность привязки некоторых данных к функции (точнее, к некоторым внутренним переменным функции, не являющихся ее параметрами) - замыканием (closure). Делегаты шарпа это фактически те же function object, они сейчас чаще так и называются. Есть правда и важное отличие, касающееся multicast-делегатов - во многих языках такой возможности нет, но это пожалуй единственное важное отличие, и его в общем-то несложно нивелировать. А вообще в питоне функциональные объекты и замыкания отлично поддерживаются, поддерживается в том числе привязка метода к объекту с помощью точки (obj.method), например:
    >>> class A:
    ...     def print_me(self):
    ...         print(self.v)
    ...
    >>> a = A()
    >>> a.v = 91
    >>> a.print_me()
    91
    >>> f = a.print_me
    >>> a.v = 155
    >>> f()
    155
    >>>

    Вот туториал: https://newcircle.com/bookshelf/python_fundamental...
    Ответ написан
    Комментировать
  • Какой язык программирования изучить новичку для написания GUI приложений?

    Nipheris
    @Nipheris Куратор тега C++
    Зависит от запаса времени и сил. Если знакомый имеет возможность учиться (уж в 16-то лет), то я бы советовал плюсы. Да, это достаточно хардкорно, но все-таки этот язык как средство разработки просто так никуда не денется, а C# после плюсов он выучит без проблем (когда он хорошо разберется в C++, ему самому захочется иметь для ряда задач такой язык, как C# или Java). Главное в том, что если он сможет дисциплинировать себя в рамках C++, и сможет писать работоспособные вещи, то будет знать, как вообще работает современное ПО, и для него любой другой язык будет просто инструментом, а не парадигмой.
    Важно, чтобы у человека УЖЕ был опыт хотя в одном языке. Если он учил Паскаль - то пусть хорошенько все вспомнит, может даже первые пару недель еще с ним позанимается. Пусть вспомнит, какие есть основные алгоритмические конструкции, структуры данных подучит, вспомнит что такое указатели. И в это же время пусть начинает переходить на плюсы. Еще стоит поискать хорошую современную книгу для новичка - C++ язык очень разносторонний, разные люди на нем пишут очень по-разному, поэтому нужен некий "направитель". Потом, когда человек освоится, сам выберет стиль и инструментарий.
    Если же знакомый слукавил, и еще совсем мало знает, то лучше начать с чего-то другого. Тут уже зависит от текущих интересов: если комп интересует как "железка", то лучше взять Си - будет "продолжение" Паскаля, если очень-очень охота быстро набросать формочку - то пусть берет C#.
    Динамические языки вроде Питона новичку не советую, плохо дисциплинируют.
    В плане инструментов Qt сейчас настолько крут, что даже под винду непросто выбрать: то ли его, то ли продвинутый, но сложный и слаборазвивающийся WPF, то ли противоречивый Windows Runtime.
    Кстати, насчет того, что сложнее - C++&Qt или C#&WPF еще можно поспорить. В первом случае сложен язык, но довольно проста библиотека, во втором - язык проще, но с WPF надо реально разбираться, чтобы им полноценно пользоваться.
    Ответ написан
    1 комментарий
  • Как отсортировать datagridview?

    Nipheris
    @Nipheris Куратор тега C#
    Гуглится за 17 секунд:
    https://msdn.microsoft.com/en-us/library/bb383929%...

    Цитирую:
    The DataGridView control provides automatic sorting, so that user can manually sort any column in the control. You can control whether a column can be sorted by setting the SortMode property of the DataGridViewColumn. You can also programmatically sort a column.

    Вам нужно, чтобы пользователь мог вручную, значит надо проставить SortMode в Automatic
    Ответ написан
  • Как сделать ожидание загрузки в C#?

    Nipheris
    @Nipheris Куратор тега C#
    1) Создали бы не новую форму, а контрол с картинкой на старой, смотрелось бы приятнее
    2) Делайте запрос асинхронно (зависит то того, чем и откуда вы загружаете), таймером проверяйте готовность, им же - анимируйте ожидание.

    Если вы не создадите второй eventloop, то вторая форма вам не поможет, т.к. цикл обработки сообщений не будет получать управление из-за синхронного кода в Windows_Loaded.
    Ответ написан
    3 комментария
  • Разница между экземпляром класса и классом C#?

    Nipheris
    @Nipheris Куратор тега C#
    > экземпляр класса и обьект выходит тоже разные вещи?
    К сожалению, в рамках современной терминологии и с учетом разнообразия объектных моделей сложно ответить однозначно на ваш вопрос. Скажу так: если у вас статически-типизированный классовый язык (class-based, т.е. C#/C++/Java), то всякий объект - всегда это экземпляр класса, но в других языках и объектных системах может быть по-другому. Чтобы получить конкретный ответ, нужно точно знать о каком языке идет речь.
    Вообще, небольшая разница есть и между самими терминами: объект это прежде всего черный ящик с identity и некоторым известным интерфейсом, и вовсе не факт, что этот объект "создан по чертежу", как сказал brainick, однако если рассматривать классы как множества, то во многих языках есть понятие корневого класса в иерархии (класса object или "класса всех объектов"). Вот если такое понятие существует, то тогда можно сказать, что любой объект является экземпляром класса object.
    Ответ написан
    Комментировать