Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 0
Регистрация: 13.05.2023
Сообщений: 42
WPF

Проблемы с анимацией RadioButton на главной форме с соблюдением MVVM

21.05.2024, 16:46. Показов 3922. Ответов 43

Студворк — интернет-сервис помощи студентам
На моей главной форме есть колонка с RadioButton и я хотел сделать так что бы по нажатию по разделу срабатывала анимация при которой справа на лево появлялся другой список RadioButton которые являются подразделом RadioButton который был нажат. Покажу на примере, как я пытался это реализовать
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
 
<Storyboard x:Key="EnterSubmenu">
    <DoubleAnimation
        Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
        From="15" To="0" Duration="0:0:0.3"/>
    <DoubleAnimation
        Storyboard.TargetProperty="Opacity"
        From="0" To="1.0" Duration="0:0:0.3"/>
    <ObjectAnimationUsingKeyFrames
        Storyboard.TargetProperty="Visibility"
        Duration="0:0:0.1">
        <DiscreteObjectKeyFrame KeyTime="0:0:0.1" Value="{x:Static Visibility.Visible}"/>
    </ObjectAnimationUsingKeyFrames>
</Storyboard>
 
<Storyboard x:Key="LeaveSubmenu">
    <DoubleAnimation
        Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
        From="0" To="15" Duration="0:0:0.2"/>
    <DoubleAnimation
        Storyboard.TargetProperty="Opacity"
        From="1.0" To="0" Duration="0:0:0.2"/>
    <ObjectAnimationUsingKeyFrames
        Storyboard.TargetProperty="Visibility"
        Duration="0:0:0.2">
        <DiscreteObjectKeyFrame KeyTime="0:0:0.2" Value="{x:Static Visibility.Collapsed}"/>
    </ObjectAnimationUsingKeyFrames>
    <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(ToggleButton.IsChecked)">
        <DiscreteBooleanKeyFrame KeyTime="0" Value="False" />
    </BooleanAnimationUsingKeyFrames>
</Storyboard>
 
<Style x:Key="DownBtnStyleProduct" TargetType="RadioButton" BasedOn="{StaticResource DownBtnStyle}">
    <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=butProduct, Path=IsChecked}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource EnterSubmenu}"/>
            </DataTrigger.EnterActions>
            <DataTrigger.ExitActions>
                <BeginStoryboard Storyboard="{StaticResource LeaveSubmenu}"/>
            </DataTrigger.ExitActions>
        </DataTrigger>
    </Style.Triggers>
</Style>
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
        <res:Btn 
x:Name="butProduct"
IsChecked="{Binding Path=CurrentView, Converter={StaticResource InstanceEqualsConverter}, ConverterParameter={x:Type view:Product}}"
Tag="0"
Style="{StaticResource BtnStyle}"
Grid.Row="1" Grid.Column="1"
Foreground="#D9D9D9"
FontSize="16"
FontFamily="Nautilus Pompilius" 
VerticalAlignment="Stretch" 
HorizontalAlignment="Stretch" 
Margin="0,5,0,5">
 
 
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="37*"/>
                    <ColumnDefinition Width="128*"/>
                </Grid.ColumnDefinitions>
 
                <Image 
        Source="/Resources/Pictures/ImageProductMenu.png"
        HorizontalAlignment="Center" 
        Width="40" 
        Height="40" 
        VerticalAlignment="Center"/>
 
                <TextBlock
        Text="Инвентарь" 
        VerticalAlignment="Center" 
        FontSize="20" 
        HorizontalAlignment="Center"
        Grid.Column="0"
        Grid.ColumnSpan="2"/>
 
            </Grid>
 
 
 
        </res:Btn>
 
        <StackPanel
Orientation="Vertical">
 
            <res:Btn 
    Grid.Row="1"
    Grid.Column="1"
    IsChecked="{Binding Path=CurrentView, Converter={StaticResource InstanceEqualsConverter}, ConverterParameter={x:Type view:Category}}"
    Style="{StaticResource DownBtnStyleProduct}"
    Foreground="#D9D9D9"
    FontSize="16"
    FontFamily="Nautilus Pompilius" 
    VerticalAlignment="Stretch" 
    HorizontalAlignment="Stretch" 
    Margin="30,5,0,5">
 
                <res:Btn.RenderTransform>
                    <TranslateTransform X="0" />
                </res:Btn.RenderTransform>
 
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="37*"/>
                        <ColumnDefinition Width="128*"/>
                    </Grid.ColumnDefinitions>
 
                    <Image 
            Source="/Resources/Pictures/ImageCategoryMenu.png"
            HorizontalAlignment="Center" 
            Width="30" 
            Height="30" 
            VerticalAlignment="Center"/>
 
                    <TextBlock
            Text="Справочник категорий" 
            VerticalAlignment="Center" 
            FontSize="18" 
            HorizontalAlignment="Center"
            Grid.Column="0"
            Grid.ColumnSpan="2"/>
 
                </Grid>
 
            </res:Btn>
</StackPanel>
Тут представлены 2 анимации прихода и ухода, стиль для RadioButton который является подразделом, так вот. При нажатии все срабатывает верно подразделы появляются но если нажать на подраздел IsChecked переходит в false у главного и срабатывает анимация ухода, я хотел бы сделать так что бы если IsChecked true находился у RadioButton который является подразделом анимация ухода не срабатывала. Я бы написал код в behind но я реализую MVVM а это нарушит паттерн. Буду очень благодарен кто сможет помочь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.05.2024, 16:46
Ответы с готовыми решениями:

Как при нажатии radiobutton на форме 1 radiobutton на форме 2 активировался?
Как при нажатии radiobutton на форме 1 radiobutton на форме 2 активировался?

Скрыть таблицу в MVVM по нажатию на RadioButton
Как скрыть таблицу по нажатия на RadioButton? Вот название таблицы: &lt;DataGrid ItemsSource=&quot;{Binding ExtensionCollection}&quot; ...

Как проверить, что RadioButton включен. MVVM
Есть радио баттон на форме как узнать чекнут ли он, реализовать шаблоном MVVM? Помогите плз

43
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
26.05.2024, 16:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от xellan24rus Посмотреть сообщение
Более лучшую реализацию я вижу с TreeView
ListBox с вложенными ListBox.

Цитата Сообщение от xellan24rus Посмотреть сообщение
Только 1 элемент группы\подгруппы может быть true
В начале был вопрос о реализации в MVVM.
Выбор только одного это поведение View или Модели?
Если первое, то не понятно при чём здесь MVVM.
Если второе, то View не стоит этим заморачиваться. Надо только адекватно представить состояния Модели.
0
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
26.05.2024, 16:53
Цитата Сообщение от Элд Хасп Посмотреть сообщение
ListBox с вложенными ListBox.
Поддерживаю, хотя думаю с treeview можно было достичь хорошего дерева для представления и вложенности. Более глубокого.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Выбор только одного это поведение View или Модели?
Я не понял зачем это нужно, спросил чуть выше повторно вроде.
В целом представление задача view, если нужен binding к IsCheked сейчас эта возможность есть.
Поэтому не вдавался сильно почему именно нужно сделать так. Скорее это пример ap получился а, не custom control получился. Ведь custom control вышел на минималках.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
26.05.2024, 18:09
Цитата Сообщение от xellan24rus Посмотреть сообщение
Поддерживаю, хотя думаю с treeview можно было достичь хорошего дерева для представления и вложенности. Более глубокого.
У TreeView очень сложный шаблон и особенная логика выделения.
Имеет смысл только если есть глубокая вложенность узлов. Для двух уровней перенастройка его шаблона не окупится.
1
 Аватар для xellan24rus
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
27.05.2024, 05:33
Элд Хасп, я про это и имел ввиду. Для двух уровней и даже для трех этого того вряд ли стоит
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2024, 05:33

Кнопка на первой форме и radiobutton на второй форме
доброго времени суток как связать кнопку из 1-й формы с radiobutton на 2-й ? пробовал так: void __fastcall...

Проблемы с анимацией
Здравствуйте. Может кто сталкивался с такой проблемой. Когда персонаж садится на стул и начинается новая анимация, он уезжает вперед. В...

Проблемы с анимацией
&lt;!DOCTYPE html&gt; &lt;head&gt; &lt;meta charset=&quot;utf-8&quot;&gt; &lt;title&gt;&lt;/title&gt; &lt;style&gt; @import...

Проблемы с анимацией
Здравствуйте уважаемые форумчане! Помогите пожалуйста с курсовой работой. C++ изучаю совсем недавно и с анимацией пока не встречался....

Проблемы с анимацией
Что делать если когда я запускаю игру анимация переходит в идл, а потом в ран и остаётся там, хотя это должно происходить по нажатию...


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

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru