powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Изменять расположение Grid в соответствии с изменением размеров окна
5 сообщений из 5, страница 1 из 1
Изменять расположение Grid в соответствии с изменением размеров окна
    #38863705
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Как можно изменить расположение Grid, при изменении размеров окна?
Код: 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.
86.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;

namespace WpfApplication2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            double x = main_grid.ActualWidth;
        }

        ThicknessAnimation ta = new ThicknessAnimation();
        Grid grid_darkviolet = new Grid();
        bool fl = true;
                    
        public double mwidth { get { return main_grid.ActualWidth; } }
        
        private void Grid_Move(object sender, RoutedEventArgs e)
        {
           
            grid_green.Margin = new Thickness(0, 0, 0, 0);
            ta.From = grid_green.Margin;
            ta.To = new Thickness(0, 0, mwidth, 0);
            ta.Duration = TimeSpan.FromSeconds(0.5);
            grid_green.BeginAnimation(MarginProperty, ta);
            
            
            grid_darkviolet.Height = 200;
            grid_darkviolet.Width = 350;
            grid_darkviolet.Background = Brushes.DarkViolet;
            grid_darkviolet.Margin = new Thickness(mwidth, 0, 0, 0);

            Button bt = new Button();
            bt.Content = "<";
            bt.Height = 50;
            bt.Width = 50;
            bt.Margin = new Thickness(200, 100, 0, 0);
            bt.Click += new RoutedEventHandler(Grid_Move_Back);

            if (fl == true)
            {
               grid_darkviolet.Children.Add(bt);
               main_grid.Children.Add(grid_darkviolet);
               fl = false;
            }

            ta.From = grid_darkviolet.Margin;
            ta.To = new Thickness(0, 0, 0, 0);
            ta.Duration = TimeSpan.FromSeconds(0.5);
            grid_darkviolet.BeginAnimation(MarginProperty, ta);
        }

        private void Grid_Move_Back(object sender, RoutedEventArgs e)
        {
            
            ta.From = grid_darkviolet.Margin;
            ta.To = new Thickness(mwidth, 0, 0, 0);
            ta.Duration = TimeSpan.FromSeconds(0.5);
            grid_darkviolet.BeginAnimation(MarginProperty, ta);

            ta.From = grid_green.Margin;
            ta.To = new Thickness(0, 0, 0, 0);
            ta.Duration = TimeSpan.FromSeconds(0.5);
            grid_green.BeginAnimation(MarginProperty, ta);
        }
    }
}


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Window x:Class="WpfApplication2.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 x:Name="main_grid">
        <Grid x:Name="grid_green"  Height="200" Width="350" Background="Green">
            <Button Name="bt_green" Width="50" Height="50" Margin="200,100,0,0" Content=">" Click="Grid_Move"></Button>
        </Grid>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
Изменять расположение Grid в соответствии с изменением размеров окна
    #38863716
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вижу 2 пути:
а) есть событие Resize
б) создать свою панель и переопределить MeasureOverride + ArrangeOverride
я бы выбрал 2ое
...
Рейтинг: 0 / 0
Изменять расположение Grid в соответствии с изменением размеров окна
    #38863722
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

А событием SizeChangedEvent нельзя воспользоваться?
...
Рейтинг: 0 / 0
Изменять расположение Grid в соответствии с изменением размеров окна
    #38863728
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,

можно конечно, но за расчет размеров и позиционирование контролов отвечает именно эти 2 метода, и эта технология пронизывает весь интерфейс от макушки дерева и до самых кончиков его веток ) как мне кажется, разумнее было бы использовать его везде. =)
можно еще с помощью триггеров и конвертора сделать.
...
Рейтинг: 0 / 0
Изменять расположение Grid в соответствии с изменением размеров окна
    #38863739
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

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


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