powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрыть элемент красиво
15 сообщений из 15, страница 1 из 1
Скрыть элемент красиво
    #39139293
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Скрываю так: Visibility="Collapsed", хотелось бы, чтоб не сразу исчезло, а "испарилось" (Opacity до 0) или уменьшить до 0...
Простите, но что-то недогуглила ...

Спасибо
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139299
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гуглите Анимацию
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139324
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Света7415Здравствуйте!

Скрываю так: Visibility="Collapsed", хотелось бы, чтоб не сразу исчезло, а "испарилось" (Opacity до 0) или уменьшить до 0...
Простите, но что-то недогуглила ...

Спасибо

Красиво не будет.

Элемент-то "испариться", но в какой-то момент всё равно вы включите "collapsed", и видимый элемент "прыгнет" на свободное место.
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139325
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно размер менять анимацией до нуля, а потом коллапсировать
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139327
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для затравки вам пример
Код: 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.
<Window x:Class="WpfApplication50.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:linq="clr-namespace:System.Linq;assembly=System.Core"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="BaseButtonStyle" TargetType="{x:Type Button}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        
        <Style x:Key="Style1" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButtonStyle}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="Click">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:1"/>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Collapsed}"/>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="Style2" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButtonStyle}">
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <RotateTransform/>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard x:Name="RotateAnimation">
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(RotateTransform.Angle)"  From="0" To="360" Duration="0:0:3" RepeatBehavior="Forever"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <StopStoryboard BeginStoryboardName="RotateAnimation"/>
                    </Trigger.ExitActions>
                </Trigger>
            </Style.Triggers>
        </Style>

        <ObjectDataProvider x:Key="Range" ObjectType="{x:Type linq:Enumerable}"
                            MethodName="Range">
            <ObjectDataProvider.MethodParameters>
                <system:Int32>0</system:Int32>
                <system:Int32>20</system:Int32>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <UniformGrid Columns="2">
        <ItemsControl ItemsSource="{Binding Source={StaticResource Range}}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Rows="5" Columns="4"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding}" Style="{StaticResource Style1}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
        <ItemsControl ItemsSource="{Binding Source={StaticResource Range}}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Rows="5" Columns="4"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding}" Style="{StaticResource Style2}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </UniformGrid>
</Window>
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139334
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

у тебя коллекция из 100500 примеров, или рука так набита - ты их с такой скоростью на коленке лабаешь?
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139335
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProRoman Mejtes,

у тебя коллекция из 100500 примеров, или рука так набита - ты их с такой скоростью на коленке лабаешь?
делаю каждый раз :)
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139339
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Круто))
Спасибо
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139424
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

А можно ещё вопросик не по теме?
Как в триггер засунуть дополнительные условия?
скажем, RoutedEvent="ValueChanged" + что-то, что проверяет саму Value
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139446
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Света7415Roman Mejtes,

А можно ещё вопросик не по теме?
Как в триггер засунуть дополнительные условия?
скажем, RoutedEvent="ValueChanged" + что-то, что проверяет саму Value
не понял вопроса
есть еще DataTrigger'ы и MultiTrigger'ы, если нужно какое то сложное условие, то его лучше сделать через CodeBehind, если нужно анимация на изменение значения, то можно использовать свойства Binding'а NotifyOnSourceUpdated и NotifyOnTargetUpdated и обрабатывать маршрутизируемые события Binding.SourceUpdated и Binding.TargetUpdated соответственно. Либо как вариант, я не так давно выкладывал пример, где показано как анимировать ProrpertyChanged, там в примере если значение меняется, то перед изменением значение элемент скрывался, потом менялось значение, потом объект проявлялся.
вот в этой теме: http://www.sql.ru/forum/1187885/wpf-mvvm-animaciya-perehoda-mezhdu-predstavleniyami
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139449
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
детально опишите, что требуется :)
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139501
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Хотелось бы общий случай, но тут у меня ПрогрессБар, хочу чтоб
- сам "исчез" - уже сделано, как у Вас - отлично!
- писал в другой текст бокс - тоже решено

при достижение Максимума, а при Валуе=0 опять появлялся, уже без анимации.

В принципе, всё решено, но код какой-то корявый(((
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139510
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, в XAML есть что-то условное, кроме Value="..."?
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139566
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так, в примеру когда нажимаете кнопку старт плавно появляется ProgressBar, в нем отражается процесс выполнения таска (фиктивный) как только задача завершится ProgressBar так же плавно исчезнет
Код: 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.
<Window x:Class="WpfApplication50.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>
        <Style x:Key="ProgressBarStyle" TargetType="{x:Type ProgressBar}">
            <Setter Property="Opacity" Value="0.0"/>
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsWorked}" Value="True">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                    <DataTrigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:1"/>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Collapsed}"/>
                                </ObjectAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.ExitActions>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsWorked}" Value="False">
                    
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        
        <StackPanel Orientation="Horizontal">
            <Button Content="Start" Width="200" Height="30" Margin="5" Click="Button_Click" />    
        </StackPanel>
        
        <ProgressBar Height="25" Margin="5"
                     Style="{StaticResource ProgressBarStyle}"
                     Minimum="0"
                     Value="{Binding FileOffset}"
                     Maximum="{Binding FileSize}"/>
        
    </StackPanel>

</Window>


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            var mainModel = new MainModel();
            DataContext = mainModel;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var mainModel = DataContext as MainModel;
            if (mainModel == null) return;
            mainModel.StartOperation();
        }
    }


Код: 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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
    public class MainModel : INotifyPropertyChanged
    {

        public MainModel()
        {
            _progress = new Progress<double>(OnProgressChanged);
            FileSize = 1000;
            FileOffset = 0;
        }

        private void OnProgressChanged(double obj)
        {
            FileOffset = obj;
        }

        public double FileSize
        {
            set
            {
                if (value.Equals(_fileSize)) return;
                _fileSize = value;
                OnPropertyChanged();
            }
            get { return _fileSize; }
        }

        public double FileOffset
        {
            set
            {
                if (value.Equals(_fileOffset)) return;
                _fileOffset = value;
                OnPropertyChanged();
            }
            get { return _fileOffset; }
        }

        public bool IsWorked
        {
            set
            {
                if (value.Equals(_isWorked)) return;
                _isWorked = value;
                OnPropertyChanged();
            }
            get { return _isWorked; }
        }

        private readonly IProgress<double> _progress;
        private double _fileSize;
        private double _fileOffset;
        private bool _isWorked;

        public void StartOperation()
        {
            IsWorked = true;
            Task.Factory.StartNew(OnWorker).ContinueWith(OnFinish);
        }

        private void OnFinish(Task obj)
        {
            IsWorked = false;
        }

        private void OnWorker()
        {
            var fileOffset = 0.0;
            while (fileOffset < FileSize)
            {
                fileOffset = fileOffset + 1;
                _progress.Report(fileOffset);

                Task.Delay(10).Wait();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
...
Рейтинг: 0 / 0
Скрыть элемент красиво
    #39139979
Света7415
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

ВЫ ГЕНИЙ!
Наверно не первая это заметила.
Полностью переделана модель, всё работает отлично!

Спасибо!!!!!!!!!!!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрыть элемент красиво
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]