WPF Canvas Zoom Focus 오류 원인 ??

CanvasError

Canvas Zoom In/Out 을 Google 검색하여 만들었습니다.
헌데 ZoomScale=ZoomValue 값을 Binding 처리해서 Button Click시 Value값을 바꿔주고 있어요,
하지만 Focus를 잃으면 반응이 없어져 버립니다.
부족한 실력에 도움 요청 드려요

좋아요 2

혹시 재현할 수 있는 샘플 프로젝트를 올려주실 수 있나요?

좋아요 2

null

좋아요 1

올려주신 zip 파일 받아서 그대로 실행해 보았는데

일단 작성해주신 코드에서 [Click] 버튼을 눌렀을때 아무 동작이 없는데

문제가 이게 맞나요?

옆에 [FocusLoss] 버튼과는 상관없이 [Click] 버튼은 아무 동작이 없습니다.

[Click] 버튼 Command로 바인딩 된 ZoomValue 값으로 확대/축소 처리가 되는 걸 원하시는 거라면

ZoomRate="{Binding ZoomValue}

부분에 Mode 속성을 부여하시면 됩니다.

ZoomRate="{Binding ZoomValue, Mode=TwoWay}"
좋아요 1

아…이부분 이었꾼요…!
특정 컨트롤에 Focus를 뺏기면 안되는 증상이었습니다.
해결되었어요…!
실례가 안된다면 추가로 한가지 더 알고싶은 부분이 있는데,
VisualBrush의 Visibility를 바인딩 하려 하는데 어떻게 하면 좋을까요 ?
VisualBrush는 Container 할당시 Background에 할당하고 있습니다.

좋아요 1

Brush는 Visibility 속성이 없습니다.

보이지 않게 처리하는게 목적이라면 ContentPresenter 컨텐츠 대상인 Canvas 자체를 Visibility 바인딩 걸어서 처리 하던지

Canvas 의 Background를 투명으로 처리 하던지 하시면 될 것 같습니다.

좋아요 2

격자눈금을 조건적으로 보여지거나, 안보여지게 하려고 하는 의도인데 좋은 방안은 없나보균요…!

좋아요 1

캔버스에 Visibility 바인딩 해서

조건에 따라 보였다 안보였다 처리 하면 되는거 아닌가요?

좋아요 1

Canvas를 ContentPresenter의 Content로 Binding 하고,
Viewmodel 내에서 Canvas를 동적으로 Add 시켜주고있습니다.
Canvas 동적으로 Background도 할당해주고 있기도 하고, 동적 Binding 방식은 안써봐서 찾아보고있습니다…!

좋아요 1

커스텀 컨트롤을 별도로 만들어 처리해 봤습니다.

코드 보시고 참고해서 응용하시면 될 것 같습니다.

[코드 git]

code_check/QnA/WPF/CanvasFocusError at main · tyeom/code_check (github.com)


**[결과]** ![Canvas_Zoom_Out|690x418](upload://1OWXVyQScpAU1at8sh6KsXrbD42.gif)

* 엇 gif 이미지 업로드가 잘 안되네요…? ;;

좋아요 2

Canvas_Zoom_Out

좋아요 3

정말 우선 감사하다는 말을 먼저 하는게 맞는것 같습니다.
감사합니다 !

최종적으로 제가 원하던 ContentPresenter를 이용한 Canvas를 이어붙이는(?) 처리를 하기위해 노력중 입니다. (Children을 붙였다 뗏다 편하게 하기 위함…? )
예제로 만들어주신 자료는 쉽게 얻을 수 없는 좋은 자료임이 확실하게 느껴지네요.
좀 더 응용 할 수 있는 방안을 찾아서 업데이팅 해보면 될듯 합니다 ! 감사합니다 !

좋아요 3