|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Media;
namespace ZoomAndPanSample
{
/// <summary>
/// Defines the data-model for a simple displayable rectangle.
/// </summary>
public class RectangleData : INotifyPropertyChanged
{
#region Data Members
/// <summary>
/// The X coordinate of the location of the rectangle (in content coordinates).
/// </summary>
private double x = 0;
/// <summary>
/// The Y coordinate of the location of the rectangle (in content coordinates).
/// </summary>
private double y = 0;
/// <summary>
/// The width of the rectangle (in content coordinates).
/// </summary>
private double width = 0;
/// <summary>
/// The height of the rectangle (in content coordinates).
/// </summary>
private double height = 0;
/// <summary>
/// The color of the rectangle.
/// </summary>
private Color color;
/// <summary>
/// Set to 'true' when the rectangle is selected in the ListBox.
/// </summary>
private bool isSelected = false;
#endregion Data Members
public RectangleData()
{
}
public RectangleData(double x, double y, double width, double height, Color color)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.color = color;
}
/// <summary>
/// The X coordinate of the location of the rectangle (in content coordinates).
/// </summary>
public double X
{
get
{
return x;
}
set
{
x = value;
OnPropertyChanged("X");
}
}
/// <summary>
/// The Y coordinate of the location of the rectangle (in content coordinates).
/// </summary>
public double Y
{
get
{
return y;
}
set
{
y = value;
OnPropertyChanged("Y");
}
}
/// <summary>
/// The width of the rectangle (in content coordinates).
/// </summary>
public double Width
{
get
{
return width;
}
set
{
width = value;
OnPropertyChanged("Width");
}
}
/// <summary>
/// The height of the rectangle (in content coordinates).
/// </summary>
public double Height
{
get
{
return height;
}
set
{
height = value;
OnPropertyChanged("Height");
}
}
/// <summary>
/// The color of the rectangle.
/// </summary>
public Color Color
{
get
{
return color;
}
set
{
color = value;
OnPropertyChanged("Color");
}
}
/// <summary>
/// Set to 'true' when the rectangle is selected in the ListBox.
/// </summary>
public bool IsSelected
{
get
{
return isSelected;
}
set
{
isSelected = value;
OnPropertyChanged("IsSelected");
}
}
#region INotifyPropertyChanged Members
/// <summary>
/// Raises the 'PropertyChanged' event when the value of a property of the data model has changed.
/// </summary>
private void OnPropertyChanged(string name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
/// <summary>
/// 'PropertyChanged' event that is raised when the value of a property of the data model has changed.
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Software craftsman | Author | Writing rapidfullstackdevelopment.com - Posting about how to survive and flourish as a software developer
Follow on Twitter for news and updates: https://twitter.com/codecapers
I'm writing a new book: Rapid Fullstack Development. Learn from my years of experience and become a better developer.
My second book, Bootstrapping Microservices, is a practical and project-based guide to building distributed applications with microservices.
My first book Data Wrangling with JavaScript is a comprehensive overview of working with data in JavaScript.
Data-Forge Notebook is my notebook-style application for data transformation, analysis and transformation in JavaScript.
I have a long history in software development with many years in apps, web apps, backends, serious games, simulations and VR. Making technology work for business is what I do: building bespoke software solutions that span multiple platforms.
I have years of experience managing development teams, preparing technical strategies and creation of software products. I can explain complicated technology to senior management. I have delivered cutting-edge products in fast-paced and high-pressure environments. I know how to focus and prioritize to get the important things done.
Author
- Rapid Fullstack Development
- Bootstrapping Microservices
- Data Wrangling with JavaScript
Creator of Market Wizard
- https://www.market-wizard.com.au/
Creator of Data-Forge and Data-Forge Notebook
- http://www.data-forge-js.com
- http://www.data-forge-notebook.com
Web
- www.codecapers.com.au
Open source
- https://github.com/ashleydavis
- https://github.com/data-forge
- https://github.com/data-forge-notebook
Skills
- Quickly building MVPs for startups
- Understanding how to get the most out of technology for business
- Developing technical strategies
- Management and coaching of teams & projects
- Microservices, devops, mobile and fullstack software development