Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Скрыть элемент красиво / 15 сообщений из 15, страница 1 из 1
28.12.2015, 14:01
    #39139293
Света7415
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
Здравствуйте!

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

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

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

Спасибо

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

Элемент-то "испариться", но в какой-то момент всё равно вы включите "collapsed", и видимый элемент "прыгнет" на свободное место.
...
Рейтинг: 0 / 0
28.12.2015, 14:28
    #39139325
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
можно размер менять анимацией до нуля, а потом коллапсировать
...
Рейтинг: 0 / 0
28.12.2015, 14:29
    #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
28.12.2015, 14:40
    #39139334
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
Roman Mejtes,

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

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

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

А можно ещё вопросик не по теме?
Как в триггер засунуть дополнительные условия?
скажем, RoutedEvent="ValueChanged" + что-то, что проверяет саму Value
...
Рейтинг: 0 / 0
28.12.2015, 16:03
    #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
28.12.2015, 16:03
    #39139449
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
детально опишите, что требуется :)
...
Рейтинг: 0 / 0
28.12.2015, 16:51
    #39139501
Света7415
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
Roman Mejtes,

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

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

В принципе, всё решено, но код какой-то корявый(((
...
Рейтинг: 0 / 0
28.12.2015, 16:56
    #39139510
Света7415
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
Вообще, в XAML есть что-то условное, кроме Value="..."?
...
Рейтинг: 0 / 0
28.12.2015, 18:03
    #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
29.12.2015, 12:46
    #39139979
Света7415
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть элемент красиво
Roman Mejtes,

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

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


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