Ответы пользователя по тегу C#
  • Как изменить содержимое XAML тега через C# WPF?

    @Ertanic
    Насколько я помню, можно добавить атрибут x:Name="name", с помощью которого будет на автомате генериться член пространства имён с таким же именем.
    То есть, например, есть кнопка:
    <Button x:Name="btn1"/>
    А в коде:
    btn1.Value = "Hello, World!";
    Есть ещё атрибут id, но там заморочка с получением, а затем привидением типа. Ещё я не помню данный способ...

    Но, насколько я знаю, это плохая практика в рамках WPF. Лучше воспользоваться встроенными возможностями WPF: события, команды.
    Ответ написан
    Комментировать
  • Как изменить фон кнопки в WPF при наведении мыши?

    @Ertanic
    Нужно поменять шаблон кнопки и забиндить цвет фона кнопки с цветом фона бордюра:
    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="#3D5754"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    Ответ написан
    1 комментарий
  • Как сформировать массив из новых чисел?

    @Ertanic
    var numbers = new List<int>();
    
    for (var i = 0; i < max; ++i)
        //  Проверяем, является ли число чётным: если нет - добавялем в массив, если да - идём дальше.
        if (i % 2 != 0) numbers.Add(i);
    
    //  Если нужно именно с массивами:
    var numbers = new string[max];
    
    // Из-за того, что добавляемое число может быть чётным, значит, некоторые  значения могут быть пропущены,
    // поэтому добавим инкрементор для массива.
    var arrayIndex = 0;
    
    for (var i = arrayIndex; i < max; ++i)
        if (i % 2 != 0) numbers[arrayIndex] = i;
    Ответ написан
    Комментировать
  • Как корректно сделать чередование?

    @Ertanic
    Если я правильно понял, тогда просто берёшь, перебираешь массив и соединяешь строку со значением из массива:
    //  Fix2
    var count = 5;
    var counter = 0;
    
    var min = 1;
    var max = 6;
    
    do 
    {
        var str = "";
        for (int i = min; i < max + 1; ++i)
            str += $"name{i} ";
        Console.Write(str + '\n');
        ++counter;
    } while (counter < count);
    Ответ написан
  • Возможен ли C# на QT или GTK а если да то где документация?

    @Ertanic
    Qt - библиотека классов, поэтому всегда можно написать обёртку над ней для того, чтобы дёргать из C#. Но этот процесс долгий и утомительный. Готовый вариант обёртки над Qt под C#.

    Для написания UI под линукс можно использовать:

    Рекомендую AvaloniaUI, так как максимально похоже на WPF или UWP, установка простая, а документация внятная. Что же до UnoPlatform - не знаю, не имел практики применения, как и со всеми остальными.

    Релизнулась MAUI - официальный кроссплатформенный фреймворк прямо от микрософтов, но самое занятное, что, когда я смотрел в последний раз, документация была абсолютно пуста, не было даже «Hello, World». Что же сейчас - не знаю. Всё равно ещё рано переходить на него, так как достаточно сырой продукт с малым количеством материалов. То есть если возникнет вопрос, то ответа можно не найти.
    UDP.: Похоже, «Hello, World» всё-таки подъехал.
    UDP2: Как сообщили в комментариях к моему ответу, у MAUI пока (?) нету поддержки Linux, поэтому забейте на него.
    Ответ написан
    2 комментария