2015-01-21 2 views
0

저는 C# WPF 프로젝트의 적절한 슬라이더를 작업 해 왔습니다.WPF - 슬라이더에서 작업 할 때 오프셋이 어디서든 정의됩니까?

슬라이더의 각 섹션에 다른 색상을 추가하여 프로세스의 다른 부분을 나타내는 배경을 가진 슬라이더를 만들고 싶습니다. 또한 작은 표시기 (기본 틱과 같지만 사용자 정의 모양과 불규칙한 위치)를 배경에 추가하려고했습니다.

그리기 브러시를 만들고 그에 따라 색상이 지정된 사각형을 추가하여이 작업을 수행했습니다. 이것은 잘 작동하는 것처럼 보였지만 작은 왜곡이 여전히 존재하므로 더 자세히 조사하여 다음을 깨달았습니다.

slider.ActualWidth로 전체 위젯의 폭을 가져옵니다. 따라서 실제 "슬라이더"부분을 덮는 배경을 만들려면 위젯에서 실제 슬라이더까지의 거리를 알아야합니다. 나는 전체 화면에서, 매우 작은 창에서 거리를 측정하여 두 개의 화면에 뻗어

enter image description here

(이미지 참조). 이 거리는 항상 5 픽셀 인 것 같습니다. 나는 구글을 시도하고 WPF가 제공하는 정보를 살펴 보았지만, 읽었거나 이것에 대한 정보는 없다.

이 거리는 항상 5 픽셀 일 수 있습니까? 그곳에는 그러한 정보가 보관되어 있습니까? 슬라이더 자체의 크기를 결정하는 또 다른 방법이 있을까요? 당신을 가정

+0

* 이미지 (10)의 명성에 따를 것이다 * ... 단지 공급하는 이미지 URL을 입력하면 누군가가 나를 대신해 추가 할 것입니다. – Sheridan

+0

말하는 "5 픽셀"거리는 Slider 컨트롤의 기본 ControlTemplate에 정의되어 있습니다. 달성하고자하는 것을 완전히 명확하게 밝히지는 않았지만 슬라이더의 모양을 변경하려는 것처럼 보입니다.이 경우 ControlTemplate과 스타일을 변경해야합니다. MSDN의이 페이지에서 도움이 될 수 있습니다. [슬라이더 스타일 및 템플릿] (https://msdn.microsoft.com/en-us/library/ms753256(v=vs.110).aspx) –

+0

@Sheridan URL * was in 마크 업이 아니라 각주 링크입니다. Markdown의 이미지 마크 업에 익숙하지 않은데 구문이 잘못되었을 수 있습니다. –

답변

0

방금 ​​시각적 트리를 걸어와 트랙의 ActualWidth을 확인할 수 있습니다 슬라이더 템플릿을 만지작 거렸다하지 않은 :

Border b = VisualTreeHelper.GetChild(slider, 0) as Border; 
Grid g = VisualTreeHelper.GetChild(b, 0) as Grid; 
Border track = VisualTreeHelper.GetChild(g, 2) as Border; 
Console.WriteLine("Track ActualWidth: " + track.ActualWidth); 
+0

아니요, 템플릿을 고치지 않았으므로 완벽하게 작동했습니다. – DeastinY

관련 문제