С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 17.04.2018
Сообщений: 11
1

Программное обращение к дочернему элементу

17.04.2018, 20:50. Показов 6092. Ответов 10

Author24 — интернет-сервис помощи студентам
Здравствуйте! Задача состоит в том, чтобы программно изменять ресурс элемента <Image>. То есть иконка возле элемента ListBox будет при необходимости меняться. Подскажите, пожалуйста, как обратиться к <Image> для установления необходимого изображения?

XML
1
2
3
4
5
6
7
8
9
10
<ListBox x:Name="LB_Groups" Grid.ColumnSpan="5" Height="360" Width="850" Grid.Row="5" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Top" SelectionChanged="LB_Groups_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="Img/Box_Group.png" Width="38" Height="38"/>
                        <TextBlock Text="{Binding}" FontSize="30" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
</ListBox>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2018, 20:50
Ответы с готовыми решениями:

Обращение к одному дочернему полю родительского класса через другое дочернее поле
Здравствуйте, пишу на форумы первый раз, потому, пожалуйста, не горите, если что не так, но...

Обращение к сгенерированному по ControlTemplate элементу WPF
Есть измененный DataGrid, который строится по вот такому ControlTemplate: &lt;ControlTemplate...

Обращение к элементу UI своего контрола-наследника из xaml другого класса
Создаю свой контрол - наследник от Grid в коде .cs В своём контроле добавляется TextBox Вопрос:...

Обращение к дочернему элементу по класу
&lt;span class=&quot;spoilerLinks&quot;&gt; &lt;span class=&quot;spoilerClick&quot; id=&quot;123456&quot;&gt;(показать)&lt;/span&gt; ...

10
3 / 3 / 3
Регистрация: 10.03.2017
Сообщений: 15
17.04.2018, 21:32 2
XML
1
<Image x:Name = "Img1" Source="Img/Box_Group.png" Width="38" Height="38"/>
А потом можно будет обратиться к элементу из кода
Img1.Source...
0
0 / 0 / 0
Регистрация: 17.04.2018
Сообщений: 11
17.04.2018, 22:08  [ТС] 3
Могу так обратиться к любому элементу, но не к этому Image. Подчеркивает как ошибку
Миниатюры
Программное обращение к дочернему элементу  
0
3 / 3 / 3
Регистрация: 10.03.2017
Сообщений: 15
17.04.2018, 22:43 4
В общем вот что нужно сделать:
XML
1
2
3
4
5
//Эту часть замени у себя 
<StackPanel Orientation="Horizontal">
      <Image Source="{Binding img}" Width="38" Height="38"/>
      <TextBlock Text="{Binding text}" FontSize="30"/>
</StackPanel>
Далее, для того что бы добавить новый элемен я не знаю где у тебя там на кнопку или еще куда добавляется новый элемент необходимо добавить сделающий код
C#
1
 LB_Groups.Items.Add(new { img = new Uri("pack://application:,,,/1.png"), text = "qweqweqw" });
Тоесть, каждый раз когда захочешь добавить элемент то прописываешь в код. к примеру:
C#
1
2
3
4
5
6
7
8
9
10
11
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();//Инициализация
                        //Добавляем новый элемент, после инициализации 
            LB_Groups.Items.Add(new { img = new Uri("pack://application:,,,/Img/Box_Group.png"), text = "qweqweqw" });
                        //Если хочешь заменить элемент то удаляй старый и добавляй новый, если хочешь сделать все по уму почитай как с коллекциями работать и интерфейс INotifyPropertyChanged 
        }
    }
}
Не забудь пути поменять для изображений

Если помогло напиши что все норм
1
0 / 0 / 0
Регистрация: 17.04.2018
Сообщений: 11
17.04.2018, 22:55  [ТС] 5
Спасибо, пробую! А как быть, если я заполняю ListBox данными из List?
То есть:
C#
1
2
List<string> list1 = new List<string>();
LB_Groups.ItemSource = list1;
0
3 / 3 / 3
Регистрация: 10.03.2017
Сообщений: 15
17.04.2018, 23:41 6
Лучший ответ Сообщение было отмечено MaryVlady как решение

Решение

C#
1
2
3
4
5
6
7
8
List<string> list1 = new List<string>();
            list1.Add("1");
            list1.Add("2");
            list1.Add("3");
            foreach (var item in list1)
            {
                LB_Groups.Items.Add(new { img = new Uri("pack://application:,,,/1.png"), text = item.ToString() });
            }
1
0 / 0 / 0
Регистрация: 17.04.2018
Сообщений: 11
18.04.2018, 13:30  [ТС] 7
Огромное спасибо, Вы мне очень помогли! Навела красоту, как и хотела)

Не могли бы Вы еще подсказать, как обратно получить значение text?
Я никогда не сталкивалась с такой конструкцией, нагуглить не получается.

Мне необходимо получить значение выбранного элемента. То есть сейчас, если использовать

C#
1
string selectedText = list1.SelectedItem.ToString()
то в selectedText передается значение "{ img = ms-appx:///Img/Box_Group.png, text = Кондитерские изделия }". А мне нужно просто получить значение "Кондитерские изделия" ну или что-то другое, что выберет пользователь.
0
3 / 3 / 3
Регистрация: 10.03.2017
Сообщений: 15
19.04.2018, 19:17 8
Тогда изначально надо было по другому делать, сейчас погоди

Добавлено через 1 час 42 минуты
Начнем:
1. В пространстве имен объяви:
C#
1
2
using System.ComponentModel;
using System.Collections.ObjectModel;
2. Унаследуй интерфейс INotifyPropertyChanged
будет что то на подобии
C#
1
2
3
public partial class MainWindow : Window, INotifyPropertyChanged
    {
      ...
3. Объяви переменные и измени часть кода. И еще возможно если ты не закомментируешь старый код будет ошибка, так вот сначала закомментируй старый код потом это пиши
C#
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
        private ObservableCollection<mdlListBoxSrc> lbItems { get; set; }//Это добавь обязательно
        public ObservableCollection<mdlListBoxSrc> LbItems { get { return lbItems; } set { lbItems = value; OnPropertyChanged("LbItems"); } }//Это добавь обязательно
 
        public MainWindow()//Это конструктор окна, у тебя возможно по другому называется
        {
            InitializeComponent();
            DataContext = this;//Это напиши обязательно
            LbItems = new ObservableCollection<mdlListBoxSrc>();//Это коллекция которая будет отображаться
        }
       //Это тоже обязательно добавь
        public class mdlListBoxSrc
        {
            public Uri uriImagePath { get; set; }
            public string Text { get; set; }
            //Если хочешь еще полей добавить просто добавляешь тут аналогичным образом
            //А потом в XAML разметке  установишь свойство которое должен отображать элемент
            //Как вот в этом текстблоке
            //<TextBlock Text="{Binding Path = Text, Mode=TwoWay}" FontSize="30"/>
            //Path - это те данные которые хочешь получить из коллекции
        }
        //Это тоже добавь
        #region Реализация интерфейса INotifyPropertyChanged, что бы узнать что что то изменилось
        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(name));
        }
        #endregion
       
       //Это событие на нажатие левой кнопки мыши не обязательно, но посмотри что оно делает
       private void LB_Groups_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            //Таким образом получаешь данные
            textBox1.Text = (LB_Groups.SelectedItem as mdlListBoxSrc).Text;//Получение текста
        }
        //Это событие на нажатие кнопки, тоже для пробы добавь посмотри что будет происходить
       //Проспойлю: Будут добавляться новые записи, и ты будешь сразу это видеть
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //Добавляешь новый элемент при нажатии на кнопку, если конечно нужно добавлять во время работы программы
            LbItems.Add(new mdlListBoxSrc { uriImagePath = new Uri("pack://application:,,,/1.png"), Text = "qqqwe" });
        }
4. Теперь следующий шаг, необходимо изменить разметку
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<ListBox x:Name="LB_Groups" 
                 Grid.ColumnSpan="5" 
                 Height="360" Width="150" Grid.Row="5" Background="Aqua"
                 Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Top" 
                 ItemsSource="{Binding LbItems, Mode=TwoWay}" MouseLeftButtonUp="LB_Groups_MouseLeftButtonUp">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Path=uriImagePath, Mode=TwoWay}" Width="38" Height="38"/>
                        <TextBlock Text="{Binding Path = Text, Mode=TwoWay}" FontSize="30"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="429,230,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
Посмотри что изменилось в разметке, думаю такой подход тебе больше понравится.
И совет тебе, изучай MVVM паттерн если хочешь на впф писать, иначе денег не дадут

Ну и на всякий случай вот полный код:
CodeBehind

C#
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;
 
namespace WpfApplication1
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private ObservableCollection<mdlListBoxSrc> lbItems { get; set; }
        public ObservableCollection<mdlListBoxSrc> LbItems { get { return lbItems; } set { lbItems = value; OnPropertyChanged("LbItems"); } }
 
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            LbItems = new ObservableCollection<mdlListBoxSrc>();
        }
        public class mdlListBoxSrc
        {
            public Uri uriImagePath { get; set; }
            public string Text { get; set; }
            //Если хочешь еще полей добавить просто добавляешь тут аналогичным образом
            //А потом в XAML разметке  установишь свойство которое должен отображать элемент
            //Как вот в этом текстблоке
            //<TextBlock Text="{Binding Path = Text, Mode=TwoWay}" FontSize="30"/>
            //Path - это те данные которые хочешь получить из коллекции
        }
 
        #region Реализация интерфейса INotifyPropertyChanged, что бы узнать что что то изменилось
        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(name));
        }
        #endregion
 
        private void LB_Groups_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            //Таким образом получаешь данные
            textBox1.Text = (LB_Groups.SelectedItem as mdlListBoxSrc).Text;
            textBlock1.Text = (LB_Groups.SelectedItem as mdlListBoxSrc).Text;
        }
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            //Добавляешь новый элемент при нажатии на кнопку, если конечно нужно добавлять во время работы программы
            //Можешь так
            LbItems.Add(new mdlListBoxSrc { uriImagePath = new Uri("pack://application:,,,/1.png"), Text = "qqqwe" });
            //или так
            //LbItems.Add(new mdlListBoxSrc { uriImagePath = new Uri("pack://application:,,,/1.png"), Text = textBox1.Text });
        }
    }
}
и разметка

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
<Window x:Class="WpfApplication1.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">
    <Grid>
        <ListBox x:Name="LB_Groups" 
                 Grid.ColumnSpan="5" 
                 Height="360" Width="150" Grid.Row="5" Background="Aqua"
                 Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Top" 
                 ItemsSource="{Binding LbItems, Mode=TwoWay}" MouseLeftButtonUp="LB_Groups_MouseLeftButtonUp">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="{Binding Path=uriImagePath, Mode=TwoWay}" Width="38" Height="38"/>
                        <TextBlock Text="{Binding Path = Text, Mode=TwoWay}" FontSize="30"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="429,230,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <TextBlock Height="23" HorizontalAlignment="Left" Margin="371,84,0,0" Name="textBlock1" Text="TextBlock" VerticalAlignment="Top" Width="84" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="371,137,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
    </Grid>
</Window>
Напиши помогло или нет
0
0 / 0 / 0
Регистрация: 17.04.2018
Сообщений: 11
19.04.2018, 19:23  [ТС] 9
Огромное Вам спасибо за проделанную работу!! Сама ни за что не разобралась бы. Попробую сегодня все добавить, обязательно отпишусь о результатах.
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
19.04.2018, 20:47 10
MaryVlady, весь код кидать не буду, но залью исходники. Классы ViewModelBase и RelayCommand там для наглядности. Лучше использовать библиотеки GalaSoft.MvvmLight. Поставить их можно через NuGet. Примеров в инете море.

Этот пример для UWP, так как я на скриншоте увидел, что пространство имён у Image из UWP, судя по всему. В нём по нажатии на кнопку загружается список с изображениями и при выборе одного из элементов списка на отдельном от ListBox(а) Image(e) отображается эта картинка. Это и есть MVVM паттерн.

Посоветую ещё поставить расширение к студии Xaml Styler.


C#
1
2
3
4
5
6
7
8
9
10
11
12
namespace ListBoxAndIcons.ViewModels
{
    public class ViewModelLocator
    {
        public ViewModelLocator()
        {
            Main = new MainViewModel();
        }
 
        public MainViewModel Main { get; set; }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
using System;
 
namespace ListBoxAndIcons.ViewModels
{
    public class GroupItemViewModel : ViewModelBase
    {
        public string Text { get; set; }
 
        public Uri Resource { get; set; }
    }
}
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
45
46
47
48
49
50
51
52
<Page x:Class="ListBoxAndIcons.Views.MainPage"
      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:local="using:ListBoxAndIcons"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:viewModels="using:ListBoxAndIcons.ViewModels"
      DataContext="{Binding Path=Main, Source={StaticResource Locator}}"
      mc:Ignorable="d">
 
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MinHeight="0" />
            <RowDefinition />
            <RowDefinition Height="50" />
        </Grid.RowDefinitions>
 
        <Image Grid.Row="0"
               Width="38"
               Height="38"
               Margin="10,10,0,0"
               HorizontalAlignment="Left"
               VerticalAlignment="Top"
               Source="{Binding Path=SelectedGroup.Resource}" />
 
        <ListBox x:Name="_groupsListBox"
                 Grid.Row="1"
                 Margin="10,17,10,10"
                 HorizontalAlignment="Stretch"
                 ItemsSource="{Binding GroupItems}"
                 SelectedItem="{Binding Path=SelectedGroup, Mode=TwoWay}">
            <ListBox.ItemTemplate>
                <DataTemplate x:DataType="viewModels:GroupItemViewModel">
                    <StackPanel Orientation="Horizontal">
                        <Image Height="38"
                               MinWidth="38"
                               Source="{Binding Resource}" />
                        <TextBlock FontSize="30" Text="{Binding Text}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
 
        <Button Grid.Row="2"
                Width="100"
                Margin="10,9,0,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Command="{Binding UpdateGroupsCommand}"
                Content="Add items" />
    </Grid>
</Page>
C#
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
45
46
47
48
49
50
using System;
using System.Collections.ObjectModel;
using System.Windows.Input;
 
namespace ListBoxAndIcons.ViewModels
{
    public class MainViewModel : ViewModelBase
    {
        private GroupItemViewModel _selectedGroup;
 
        public MainViewModel()
        {
            GroupItems = new ObservableCollection<GroupItemViewModel>();
            UpdateGroupsCommand = new RelayCommand(UpdateGroups);
        }
 
        public ObservableCollection<GroupItemViewModel> GroupItems { get; private set; }
 
        /// <summary>
        /// Выбранный элемент в списке должен сюда передаваться с помощью биндинга.
        /// </summary>
        public GroupItemViewModel SelectedGroup
        {
            get { return _selectedGroup; }
            set
            {
                _selectedGroup = value;
                OnPropertyChanged();
            }
        }
 
        private void UpdateGroups()
        {
            for (int i = 1; i < 5; i++)
            {
                //string path = $"pack://application:,,,/Assets/Icons/{i:D3}.jpg";
                string path = $"ms-appx:///Assets/Icons/{i:D3}.jpg";
                Uri icon = new Uri(path, UriKind.Absolute);
 
                GroupItems.Add(new GroupItemViewModel
                {
                    Resource = icon,
                    Text = $"Resource {i}"
                });
            }
        }
 
        public ICommand UpdateGroupsCommand { get; private set; }
    }
}
Вложения
Тип файла: zip ListBoxAndIcons.zip (410.5 Кб, 1 просмотров)
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
19.04.2018, 21:02 11
Вот ещё тут море примеров на самые разные темы: https://github.com/Microsoft/W... al-samples
0
19.04.2018, 21:02
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2018, 21:02
Помогаю со студенческими работами здесь

Обращение к дочернему элементу [object HTMLCollection]
Всем привет, задался вопросом, как можно обратиться к дочернему элементу Есть такой код var...

Как присвоить id родителя дочернему элементу?
всем привет. задача такая. я динамически создаю ячейку таблицы, вот код var refs = '&lt;td...

Как передать св-во дочернему элементу от родителя
eachTask(item, i) { return ( &lt;Task key={i} index={i}&gt;...

Как обратиться к дочернему элементу JSON
Всем привет. Решил сделать бота для Discord и заодно попытаться изучить javascript и node.js. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru