• WPF. XAML. Как исправить/усовершенствовать анимацию?

    @i_light
    Backend, XAML, crossplatform
    (банальный костыль)
    Пробовали задать OpacityMask того же цвета, что и фон?
    Чтобы фон как бы был, но 100% прозрачный.
    Ответ написан
  • Как изменить алгоритм масштабирования к иконке в окне (WPF)?

    @i_light
    Backend, XAML, crossplatform
    Вообще, любое масштабирование приводит к потере качества. Никакое сглаживание ситуацию не спасает.

    Что касается иконки в заголовке окна, то она рендерится не силами WPF, насколько мне известно, а самим dwm, поэтому разметкой ничего не решить. Разве что делать кастомный заголовок.

    Лучше всего будет нарисовать иконку размер в размер. Или несколько иконок под разные dpi. По крайней мере, мы в своих проектах поступаем с картинками именно так.
    Ответ написан
    Комментировать
  • С чего начать изучать C#?

    @i_light
    Backend, XAML, crossplatform
    Книжка Microsoft в соавторстве с intuit, C# для школьников - отличное начало.

    А потом Троелсен.
    Ответ написан
    Комментировать
  • Как осуществить соединение SQL в новой форме?

    @i_light
    Backend, XAML, crossplatform
    Появляется и пропадает - ненормальное поведение. Цепляйтесь дебаггером и пошагово смотрите, в чём проблема.
    Ответ написан
    Комментировать
  • Как передать переменную в значение атрибута?

    @i_light
    Backend, XAML, crossplatform
    Атрибуты - это метаданные вашего кода. Они "работают" в основном на этапе компиляции, превращаясь в типовые конструкции в выходном IL. Использовать run-time переменные в атрибутах просто некорректно.

    В вашем случае, полагаю, смысл использования параметра в атрибуте располагает к использованию вместо этого перегруженных конструкторов или дженериков.
    Ответ написан
    Комментировать
  • C# Portable Class Library async property, как бы сделать попрямее код?

    @i_light
    Backend, XAML, crossplatform
    Не очень понимаю, зачем вам асинхронный геттер.

    Сделайте в модели асинхронный метод, который получает значение и заносит его в поле, связанное с UI. Метод можно вызывать в конструкторе, или по таймеру, или через команду - как нужно.

    Если не нравится, что пока идёт загрузка, в UI показывается значение по умолчанию - тут уже варианты, от банального FallbackValue при связывании до конвертеров и кастомных полей (как-то для такой цели я сделал поле модели типа string, при асинхронной загрузке заносил туда значение типа "loading...", а после успешной загрузки клал туда отформатированное в string значение).
    Ответ написан
    Комментировать
  • Не изменяет данные из Team Foundation Server?

    @i_light
    Backend, XAML, crossplatform
    Когда ваш проект находится под управлением TFS и он не в состоянии checked out, то все файлы проекта помечаются атрибутом read only. Если нет соединения с TFS, перезапустите студию и она будет предлагать снять атрибут при обращении к файлу.

    Атрибут можно снять ручками в свойствах файла в обычном проводнике, но могут быть проблемы с неучтёнными изменениями при check-in.
    Ответ написан
    Комментировать
  • Gridview у которого шаблон элемента тоже GridView, как фиксировать ширину колонок?

    @i_light
    Backend, XAML, crossplatform
    Чтобы не пересчитывалась - указывайте её явно. Никаких "*" и "Auto".
    Ответ написан
  • Binding Selected TreeNode как это сделать при динамическом биндинге?

    @i_light
    Backend, XAML, crossplatform
    Задайте имя (например, MyControl) элементу с нужным контекстом (в вашем случае нужному HierarchicalDataTemplate) и связывайте через него с полем SelectedItem в модели

    <Grid Name="LayoutRoot">
       <Grid.DataContext>
          <MyModel SelectedItem={Binding DataContext, ElementName=MyControl}>
       </Grid.DataContext>
    ...
    Ответ написан
    5 комментариев
  • Из-за чего пропадают стили в WPF?

    @i_light
    Backend, XAML, crossplatform
    После того, как переопределён ItemTemplate или ItemContainerStyle, старые стили соответственно полностью перезаписываются. Неуказанные значения - перезаписываются значениями по умолчанию.

    Объявление из примера кода равнозначно коду:
    var view = new ListView();
    view.ItemTemplate = new DataTemplate();
    view.ItemContainerStyle = new Style() { ... };


    Если нужно что-то изменить в стиле в ресурсе, надо его редактировать именно в том месте, где он определён. Если же нужно иметь оба стиля, Expression Blend умеет делать копии (правый клик по контролу - Edit Template - Edit a copy). Ну, или просто скопировать и дать другой ключ ресурса.
    Ответ написан
    1 комментарий
  • Resharper не видит пространства имен из dll. Что делать?

    @i_light
    Backend, XAML, crossplatform
    ReSharper неидеален и косячит с определённой регулярностью :)
    Пишите фидбэк разработчикам, там обычно вполне адекватно на это реагируют.
    Ответ написан
    Комментировать
  • Как дать Visual Studio леща и заставить изменить своё мнение о проекте?

    @i_light
    Backend, XAML, crossplatform
    Почистить папки bin и obj, перезапустить студию. Если нет - искать причину в коде.
    Ответ написан
    Комментировать
  • Как открыть проект в Visual Studio 2009, созданный в 2013?

    @i_light
    Backend, XAML, crossplatform
    Перенести возможно. *.sln-файл конечно придётся выбросить, но попроектно можно попробовать. Если не получится - пофайлово.

    Не знаю, чем может помочь смена версии фреймворка, как предлагают предыдущие комментаторы, так как это в основном инструкция компилятору, а не студии. Код от этой процедуры не изменяется, и если другая версия фреймворка не поддерживает какие-то участки кода, их всё равно придётся править вручную.
    Ответ написан
    Комментировать
  • Какой из ноутбук стоит взять?

    @i_light
    Backend, XAML, crossplatform
    Мне нравятся 14" модели. Меньше - мелко, больше - появляется не нужный особо в программировании numpad.

    15.6" обычно ни туда, ни сюда - из-за numpad'а у них клавиши ещё мельче, чем на 14" моделях. 17" и выше уже этим не страдают, но весят при этом непомерно, как по мне - не вижу в них смысла.

    Сейчас у меня HP EliteBook 8470p в доработанной топовой конфигурации (i7, дискретное видео, 8 гб памяти, SSD 240 гб, HDD 2 тб). Но хочу поменять его на EliteBook 840 G1, как только нужная сумма скопится. Из-за веса, из-за подсветки клавиатуры, из-за доступности у последнего FullHD-экрана, хотя 1600x900 на 14" смотрятся вполне неплохо.

    Нравится в элитбуках (равно как и в ThinkPad и некоторых Dell) возможность подключать док-станцию, нормальный (а не как в Envy) софт для безопасности (ради работы сканера отпечатков) - не ради безопасности, а ради удобства работы. Аксессуары опять же, хотя бы пристёгиваемые к днищу батареи. А также очень удобное обслуживание - нижняя крышка на защёлках, большая часть комплектующих доступна для замены/обслуживания за пять минут. Разъёмы на любой вкус и цвет (практически).

    Из предложенных оба не нравятся - первый тяжёлый, второй мелкий и не позволяет конфигурацию HDD+SSD.
    Ответ написан
    2 комментария
  • Как сделать асинхронное синхронным при работе с веб-сервисами?

    @i_light
    Backend, XAML, crossplatform
    Вынесите ваш код в отдельный метод и передавайте делегат OnSaveCompleted как параметр этого метода, вместе с остальными параметрами, которые нужно передать.
    Ответ написан
    Комментировать
  • Как вывести одномерный массив чисел в виде таблицы?

    @i_light
    Backend, XAML, crossplatform
    Ну, например, так:

    int _width = 4;
    
    string formatArray(IEnumerable<int> numbers)
    {
       var output = string.Empty;
       var skip = 0;
       while (skip <= numbers.Count)
       {
          output += string.Join(numbers.Skip(skip).Take(_width), " ") + "\n";
          skip += width;
       }
       return output;
    }
    Ответ написан
    Комментировать
  • WPF. Как правильно связать несколько ListView, расположенных в TabControl, к одному свойству?

    @i_light
    Backend, XAML, crossplatform
    Секция Resources объявляет статические ресурсы контрола. Их нужно использовать так:

    <ListView ItemsSource="{Binding Source={StaticResource ISource}}" />


    x:Name в данном случае не нужно, только x:Key.
    Ответ написан
    Комментировать
  • Как на Wpf сделать чередующуюся прозрачность фона элементов списка?

    @i_light
    Backend, XAML, crossplatform
    Перепишите Setter-ы в нужных местах примерно так:

    <Setter Property="Background">
       <Setter.Value>
          <SolidColorBrush Color="#DAAE1A" Opacity="0.5"/>
       </Setter.Value>
    </Setter>


    Вообще, очень полезно иногда использовать возможности синтаксиса XAML, которые по наследству перешли от XML :)
    Ответ написан
    Комментировать
  • Как сделать анимированное переключение изображений в WPF?

    @i_light
    Backend, XAML, crossplatform
    Используйте триггеры:

    В XAML:
    <Image Source="{Binding CurrentImage}" >
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="(Image.Opacity)" From="0" To="1" Duration="0:0:1" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
    </Image>
    
    <Button Content="Next image" MouseLeftButtonDown="NextImageClick"/>


    В классе модели:

    public BitmapImage CurrentImage { get; set; }
    
    public List<BitmapImage> Images { get; set; }
    
    private int _imageIndex = 0;
    
    public void NextImageClick(object sender, MouseButtonEventArgs e)
    {
       if (_imageIndex >= Images.Count) _imageIndex = 0;
       CurrentImage = Images[imageIndex];
       RaisePropertyChanged("CurrentImage");  //необходимо реализовать INotifyPropertyChanged в классе модели
       _imageIndex++;
    }


    Должно сработать :)

    При надобности, анимацию можно сделать любую другую.
    Ответ написан
    Комментировать
  • Как присвоить Source в WPF?

    @i_light
    Backend, XAML, crossplatform
    Нужно подключить namespace в заголовках XAML, примерно так:
    <UserControl x:Class="..."
       ...
       xmlns:res="clr-namespace:<namespace_проекта>.Properties"
       ...


    И затем можно использовать значения из ресурсов, примерно так:

    <Image Source="{x:Static res:Resources.<имя_ресурса>}" />


    (правда, возможно, так не сработает и потребуется использовать ImageBrush или что-то другое, у нас в проекте используются только строковые ресурсы).

    Собственно, можно погуглить "wpf using resx in xaml".
    Ответ написан
    Комментировать