[Visual C# WPF] Shape(size, name, label, text) drag(1)
Binding: Grid를 사용하여 Ellipse와 TextBlock를 묶음
앞에선 var를 사용하였으나
실체는 있으나 이름이 없는 사태가 발생
한번 만들고 나서 접근을 할 수 없었다.
그래서 배열을 사용, 배열 선언을 착각해 할 수 없다고 판단, 엄청난 길을 돌아왔다.
Grid[] grid = new Grid[15];
Ellipse[] ellipseShape = new Ellipse[15];
TextBlock[] txtShape = new TextBlock[15];
Shape에서 이벤트 발생 시, 여기선 마우스 클릭
그 Shape의 정보를 가져 올 수 있다.
지금까지의 문제는 Shape도 가져오고, 이름표도 있지만 부를 수가 없다는 것이었다.
왜 text가 있는데 부르지를 못하니 ㅋㅋ
부르기 위해 grid.name를 설정하면 그래픽이 작동안하는 문제가 발생;;;
결론적으로, var를 array로 변경해서 해결
void OnMouseDown(object sender, MouseButtonEventArgs e)
{
var shape = e.Source as Shape;
if (shape != null)
{
LayoutRoot.CaptureMouse();
dragging = true;
currentP = e.GetPosition(LayoutRoot);
currentShape = (FrameworkElement)shape.Parent;
}
}
-------------------------------------------------------------------------
이제는 다음과 같이 비교는 할 수 있다.
여전히 이름은 없지만, grid[0]을 이름이라면 이름이라 할 수도 있다.
currentShape == grid[0]
조건문을 사용해
크기나 텍스트를 바꿀 수 있다.
if (currentShape == grid[0])
{
// 크기 변경
grid[0].width = 100;
grid[0].height = 100;
// 텍스트 변경
txtShape[0].text = "새로운내용";
}
여기까지, 움직이는 원의 크기, 라벨 변경을 할 수 있는 코딩 완료.
다음으로 우클릭 시 새창(속성창이라 부름)을 열어 크기 및 라벨을 바꿀 수 있도록 할 예정이다.