Dobry wieczór mam mały problem. Tworzę aktualnie projekt w WPF i chciałbym przekazywać dane między jednym oknem a drugim. Chciałbym przesyłać wysokość oraz szerokość aby za pomocą tych danych canva zmieniała rozmiar na podany przez użytkownika. Coś próbuję zrobić ale na moim aktualnym poziomie mało zdziałam dlatego proszę o pomoc. Oto kod. Bardzo dziękuję za pomoc.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.RegularExpressions;
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.Imaging;
using System.Windows.Shapes;
using System.Xaml.Schema;
namespace WpfApp1.Windows
{
/// <summary>
/// Logika interakcji dla klasy DrawPage.xaml
/// </summary>
///
class HightValueException : Exception
{
public HightValueException() : base("Wartości przekraczają wielkość płótna")
{
}
}
class StringValueException : Exception
{
public StringValueException() : base("Wartości przekraczają wielkość płótna")
{
}
}
public partial class DrawPage : Window
{
public DrawPage()
{
InitializeComponent();
}
SettingsPage st = new SettingsPage();
private void DrawBtn(object sender, RoutedEventArgs e)
{
try
{
//double xvalaue = double.Parse(pointX.Text);
//double yvalue = double.Parse(pointY.Text);
//if (xvalaue > canvas.ActualHeight || yvalue > canvas.ActualWidth)
//{
// throw new HightValueException();
//}
//else
//{
// var myLine = new Line();
// myLine.Stroke = System.Windows.Media.Brushes.LightSteelBlue;
// myLine.X1 = xvalaue;
// myLine.Y1 = yvalue;
// myLine.HorizontalAlignment = HorizontalAlignment.Left;
// myLine.VerticalAlignment = VerticalAlignment.Center;
// myLine.StrokeThickness = 2;
// canvas.Children.Add(myLine);
//}
var value = st.width.Text;
MessageBox.Show(value, "wartość okna");
}
catch (HightValueException h)
{
MessageBox.Show(h.Message, "Błąd");
}
}
private void ClearBtn(object sender, RoutedEventArgs e)
{
canvas.Children.Clear();
}
private void Validation(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9]+");
e.Handled = regex.IsMatch(e.Text);
}
}
}
<Window x:Class="WpfApp1.Windows.DrawPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1.Windows"
mc:Ignorable="d"
Title="DrawPage" Height="900" Width="1600"
Background="Wheat">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" Height="900">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.ColumnSpan="2" Content="Rysunek" FontSize="40" VerticalAlignment="Center" HorizontalContentAlignment="Center"></Label>
<Label Grid.Row="1" Grid.Column="0" FontSize="25" Content="Podaj X:"></Label>
<TextBox Grid.Row="1" Grid.Column="1" Height="50" x:Name="pointX" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="Validation"></TextBox>
<Label Grid.Row="2" Grid.Column="0" FontSize="25" Content="Podaj Y:"></Label>
<TextBox Grid.Row="2" Grid.Column="1" Height="50" x:Name="pointY" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" PreviewTextInput="Validation"></TextBox>
<Label Grid.Row="3" Grid.Column="0" FontSize="25" Content="Okrąg"></Label>
<CheckBox Grid.Row="3" Grid.Column="1"></CheckBox>
<Label Grid.Row="4" Grid.Column="0" FontSize="25" Content="Trójkąd"></Label>
<CheckBox Grid.Row="4" Grid.Column="1"></CheckBox>
<Button Content="Rysuj" Grid.Row="5" Grid.Column="1" Height="50" Click="DrawBtn"></Button>
<Button Content="Czysc" Grid.Row="6" Grid.Column="1" Height="50" Click="ClearBtn"></Button>
<Canvas Background="White" x:Name="canvas" Margin="20" Grid.Row="1" Grid.Column="2" Grid.RowSpan="11" Grid.ColumnSpan="3">
</Canvas>
</Grid>
</ScrollViewer>
</Window>
oraz druga strona z której chcę pobrać dane (tutaj tylko xaml)
<Window x:Class="WpfApp1.Windows.SettingsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1.Windows"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="CanvaSettings" Background="White" Width="800" Height="450">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Content="Właściwości Płótna" FontSize="40" Grid.ColumnSpan="6" HorizontalContentAlignment="Center"/>
<Label Content="Wysokość" Grid.Column="2" Grid.Row="1" Margin="5" HorizontalAlignment="Center"/>
<Label Content="Szerokość" Grid.Column="2" Grid.Row="2" Margin="5" HorizontalAlignment="Center"/>
<Label Content="Kolor" Grid.Column="2" Grid.Row="3" Margin="5" HorizontalAlignment="Center"/>
<TextBox Grid.Column="3" Grid.Row="1" Margin="5" x:Name="height"></TextBox>
<TextBox Grid.Column="3" Grid.Row="2" Margin="5" x:Name="width"></TextBox>
<ComboBox Grid.Column="3" Grid.Row="3" Margin="5" x:Name="color" SelectedIndex="6">
<ComboBoxItem Content="Red"></ComboBoxItem>
<ComboBoxItem Content="Green"></ComboBoxItem>
<ComboBoxItem Content="Blue"></ComboBoxItem>
<ComboBoxItem Content="Yellow"></ComboBoxItem>
<ComboBoxItem Content="Orange"></ComboBoxItem>
<ComboBoxItem Content="Purple"></ComboBoxItem>
<ComboBoxItem Content="Light Blue"></ComboBoxItem>
</ComboBox>
<Button Content="Dalej" Grid.Column="2" Grid.ColumnSpan="2" Grid.Row="4" Height="25" Margin="5" Click="DrawPageBtn"/>
</Grid>
</Window>