Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2015, 21:14   #1
REztor
Форумчанин
 
Регистрация: 28.02.2009
Сообщений: 302
По умолчанию Изменять расположение Grid в соответствии с изменением размеров окна

Всем привет.
Как можно изменить расположение Grid, при изменении размеров окна?
Код:
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;
        //double width = System.Windows.SystemParameters.MaximumWindowTrackWidth;
             
        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);
        }
    }
}
Код:
<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>
REztor вне форума Ответить с цитированием
Старый 26.01.2015, 21:51   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не задавать размер жестко через width/height, и все будет само.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка демонстрационного многопоточного приложения с динамическим изменением свойств окна и компонент.(Delphi) I am Olik Помощь студентам 1 04.01.2014 22:43
Получение размеров чужого окна s77lanselot77s C# (си шарп) 7 30.06.2012 11:40
Изменение размеров окна Liones Общие вопросы Delphi 4 15.10.2010 09:01
Изменение размеров окна Light Alloy Общие вопросы Delphi 2 06.10.2009 07:21
Как изменять размеры шрифта при изменении размеров canvas? SkAndrew Мультимедиа в Delphi 2 07.12.2008 23:02