2013-03-12 6 views
0

내 WPF 응용 프로그램의 이상한 동작이 있습니다. 런타임시 내 단추의 XY 위치가 Visual Studio의 xaml-Editor에 설정할 때 발산되는 것처럼 보입니다 (이 이름은 btw입니까?)런타임에 WPF 버튼의 XY 좌표가 이동합니까?

테두리 세트 나 패널이없고, 여백으로 만 설정했습니다. 내 버튼은 다음과 같은 코드가 있습니다 :

<Button Content="OK" Height="23" Margin="213,319,4,7" Name="button3" Width="75" IsCancel="True" Click="button3_Click" IsEnabled="False" />

편집 :이 아닌 크기 조정 대화이기 때문에 마진이 고정되어

.

XAML 편집기 : 당신이 볼 수 있듯이, 버튼의 약간 왼쪽으로까지 이동

enter image description here

런타임 :

enter image description here

왜 그렇게이며 어떻게 내가 할 수있는 고쳐?

+1

발산하는 방법? 주변 태그는 무엇입니까? 어쨌든 여백을 둔 위치 지정은 피해야합니다. –

+0

여기에서 같은 질문을하고 싶습니다. 발산과 함께 무엇을 말하고 싶습니까? 아무것도하지 않거나 창 크기를 조정할 때 버튼이 이동합니까 ... 등 ... @HenkHolterman, 여백을 두지 않는 이유는 무엇입니까? 대안은 무엇입니까? (또는 당신이 여백에 의해 할 수 없다는 말을하고 싶지 크기?) ... btw, 위의 코드 여백 * 및 * 크기 설정, 그래서 이러한 설정 중 하나가 바인딩됩니다 특히 윈도우의 크기가 변경 될 때 무시됩니다 ... –

+0

이 (가) 질문을 편집했습니다. –

답변

0

Alignment, Margins 및 Padding Overview에 대한 링크는 작동 원리를 이해하는 데 도움이 될 것 같습니까?

다른 방법으로는 Stackpanel, Wrappand 또는 Grid와 같은 패널 래퍼를 배치하십시오. 컨트롤의 레이아웃을 작업하는 데 적합합니다.

EDIT : ResizeMode = "NoResize"문제가있었습니다. 당신이 창 태그에이 속성을 remve 경우, 정렬이

Link to Refer

+0

필자는 정렬, 여백 및 패딩에 대한 개념을 이해했다고 생각합니다. 나는 언제나 내 창 크기가 조정되지 않았지만 내 요소가 왜 움직이는 지 궁금합니다. 말하자면 왜 XY 위치가 바뀌어야 하는가? –

+0

귀하의 이미지를 볼 수 없습니다. 그걸 고칠 수 있니? 그럼 내가 도와 줄게 – Smaug

+0

지금 보시겠습니까? http://www.abload.de/img/12_03_2013_1byuwk.png/http://www.abload.de/img/12_03_2013_2xbu1x.png –

0

남자 좋은 것, 그 WPF에서 UI 요소의 위치를 ​​설정하는 최악의 방법!

<Grid Margin="5"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 

    <ListView Grid.Row="0" Name="TableList" Margin="5"/> 

    <Button Grid.Row="1" Name="button3" Content="OK" 
      Margin="5" 
      Width="75" 
      HorizontalAlignment="Right"/> 
    </Grid> 

당신은 참조하십시오

는 다음과 같이 귀하의 XAML을 리팩토링? 모든 자식 (이 경우 ListViewButton)의 위치를 ​​처리하는 Grid이 있습니다.

Button은 오른쪽 (HorizontalAlignment 속성)에 맞춰 두 번째 에 놓입니다.

Grid과 해당 하위 모두는 Margin=5입니다. 이는 모든 어린이의 마진이 인접한 어린이 및 Grid 외부의 다른 통제자와 동등하다는 것을 보증합니다.

또한 ListViewButton은 완벽하게 정렬됩니다.

당신의 접근 방식의 문제는 당신이 ButtonWidthLeft MarginRight Margin을 설정한다는 것입니다.Window의 경계가 일부 픽셀을 먹거나 WPF가 모든 정보를 함께 처리 할 수 ​​없어 계산을 놓칠 수 있기 때문에 합계가 올바르지 않을 수도 있습니다. 그러나 결과는 입니다. 적어도 하나의 매개 변수는 무료로 두어야합니다 . 내 예에서는 윈도우에서 Margins을 무료로 남겼습니다. Margin=5Margin과 다른 컨트롤을 설정하지만 ButtonWindow의 왼쪽 테두리에서 얼마나 떨어져 있는지 계산하려면 WPF 그래픽 엔진에 맡깁니다.