Witam,
Mam taki najprostszy przykład że przy naciśnięciu przycisku tworzę obiekt, zmieniam wartości zmiennych które są przekazywane jako parametry do konstruktora tego obiektu. Kod:
WPF:
<Window x:Class="TestWPF.MainWindow"
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:TestWPF"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Rectangle x:Name="prostokat" HorizontalAlignment="Left" Height="292" Margin="407,10,0,0"
Stroke="Black" VerticalAlignment="Top" Width="18">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="{Binding jeden}"/>
<GradientStop Color="Black" Offset="{Binding dwa}"/>
<GradientStop Color="White" Offset="{Binding trzy}"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Button Content="Button" HorizontalAlignment="Left" Margin="206,94,0,0"
VerticalAlignment="Top" Width="75" Click="Button_Click"/>
</Grid>
</Window>
C#:
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.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TestWPF {
/// <summary>
/// Logika interakcji dla klasy MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
Punkty punkty = new Punkty(0, cnt1, cnt2);
prostokat.DataContext = punkty;
}
double cnt1 = 0.97;
double cnt2 = 1;
private void Button_Click(object sender, RoutedEventArgs e) {
cnt1 -= 0.05;
cnt2 -= 0.05;
Punkty punkty = new Punkty(0, cnt1, cnt2);
prostokat.DataContext = punkty;
}
}
public class Punkty {
public int jeden { get; set; }
public double dwa { get; set; }
public double trzy { get; set; }
public Punkty(int jeden = 0, double dwa = 0.99, double trzy = 1) {
this.jeden = jeden;
this.dwa = dwa;
this.trzy = trzy;
}
}
}
Program działa. Jednak chodzi o to że muszę stworzyć dwie dodatkowe zmienne cnt1, cnt2 przechowujące wartości żeby obiekt nie tworzył się od nowa taki sam, a stworzył się już ze zmienionymi wartościami (pasek szedł w górę). I mam pytanie czy ja muszę tworzyć te zmienne? Nie ma jakiegoś innego sposobu? Wolałbym aby działo się to w zakresie klasy bez potrzeby tworzenia dodatkowych pomocniczych zmiennych.
Pozdrawiam