programing

WPF의 폭과 실제 폭의 차이점은 무엇입니까?

jooyons 2023. 4. 25. 22:16
반응형

WPF의 폭과 실제 폭의 차이점은 무엇입니까?

현재 작업 중입니다.PanelWPF에 있는 s, 그리고 나는 그것에 관해 알아차렸습니다.Width그리고.Height속성, 또한 두 개의 다른 속성이 있습니다.ActualWidth그리고.ActualHeight.

ActualWidth

이 요소의 렌더링된 너비를 가져옵니다.이것은 종속성 속성입니다(FrameworkElement에서 상속됨).

Width

요소의 너비를 가져오거나 설정합니다.이것은 종속성 속성입니다(FrameworkElement에서 상속됨).

참조: MSDN입니다.

사이의 차이점과 어느 하나를 언제 사용해야 하는지 누가 지적할 수 있습니까?

Width/Height요청한 크기 또는 레이아웃 크기입니다.Auto로 설정하면 값이 다음과 같습니다.double.NaN코드의 속성에 액세스할 때 사용합니다.

ActualWidth/ActualHeight그리고.RenderSize.Width/RenderSize.HeightRenderSize가 크기 유형이므로 둘 다 요소의 렌더링 크기를 반환합니다.항목의 실제 크기를 원하거나 필요한 경우 다음 속성 중 하나를 사용하십시오.

나는 찾습니다ActualWidth한 요소의 너비 또는 높이를 다른 요소에 바인딩할 때 가장 유용합니다.

이 간단한 예에서는 두 개의 버튼이 나란히 배치되어 있고, 그 아래에 두 개의 버튼이 포함된 스택 패널의 너비로 제한된 설명이 있습니다.

<StackPanel>

    <StackPanel Margin="0,12,0,0" Orientation="Horizontal" Name="buttonPanel" HorizontalAlignment="Left" >
         <Button Content="Yes - Arm the missile" FontWeight="Bold" HorizontalAlignment="Left"/>
         <Button Content="No - Save the world" HorizontalAlignment="Left" Margin="7,0,0,0"/>
    </StackPanel>

    <TextBlock Text="Please choose whether you want to arm the missile and kill everybody, or save the world by deactivating the missile." 
               Width="{Binding Path=ActualWidth,ElementName=buttonPanel}" Margin="0,5,0,0" HorizontalAlignment="Left" TextWrapping="Wrap"/>

</StackPanel>

ActualWidth값을 채우는 것을 고려하므로 언제든지 해당 번호를 알고 싶으면 전화를 할 수 있습니다.Actualwidth계산은 피해야 합니다.

edit: 마진 b/c가 제거되었습니다. 실제 너비에 속하지 않습니다.

ActualWidth렌더링 시스템에서 설정되며 다른 요소의 폭 및 전체 크기 제약 조건에 따라 다를 수 있습니다.따라서 변경할 수 없습니다. Width변경할 수 있는 속성이며 요소의 너비를 늘리거나 줄이는 데 사용해야 합니다.

MSDN에서 다음을 수행합니다.

이 속성은 다른 폭 입력 및 레이아웃 시스템을 기반으로 계산된 값입니다.값은 실제 렌더링 경로를 기반으로 레이아웃 시스템 자체에 의해 설정되므로 다음과 같은 특성 설정 값보다 약간 늦어질 수 있습니다.Width입력 변경의 기초가 됩니다.

(분명히) 바인딩에 를 사용하지 않는 타당한 이유가 있습니다.ActualHeight(에 따라)을 클릭합니다.다음을 설정합니다.Width에의합니다.ActualWidth레이아웃 체인이 끊어질 수 있습니다.

최상의 경우 상위(바인딩 소스)의 레이아웃 프로세스가 완료된 후 요소/컨트롤을 구문 분석해야 합니다.그 말은 시간이 더 필요하다는 뜻이죠.상위 계층 수준과 동일한 계층 수준인 경우 레이아웃 프로세스는 최소 두 번의 런을 수행하여 최종 크기를 계산해야 합니다.

예를 들어, 크기 속성을 오버라이드하는 , 이 컨트롤은 크기 속성을 예, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, 트, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, the, theTemplatedParent (하지 마십시오)

<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding ActualWidth}" 
           Height="1" Fill="#000000"/>

포함 창의 크기를 조정할 때, 제어 장치는 용기가 작아지는 것을 방지하고 레이아웃을 제동합니다.이렇게 설정해 주세요.Width문제를 해결합니다(실행).

<Rectangle DockPanel.Dock="Top" Width="{TemplateBinding Width}" 
           Height="1" Fill="#000000"/>

굳이 '먹다'를 써야 한다면요.ActualWidthXAML을 사용합니다.최종 배치 크기를 망치지 말고 고쳐야 해요.

바로 렌더 너비!= 레이아웃 너비입니다.하나는 레이아웃에 사용되고 다른 하나는 렌더에 사용됩니다.WinForms와 마찬가지로, 크기 및 ClientSize 속성이 있지만 은 약간 다르므로 렌더링의 Atual/Client 크기와 레이아웃의 너비/높이를 사용해야 합니다.

이렇게 설정할 수 있습니다.Width속성입니다.ActualWidth소유물.

»는 다음과 같습니다.Width을 사용해서 패널이 어떻게 그려지는지를 결정하고, 그 다음에는 패널이 어떻게 그려지는지를 결정합니다.ActualWidth이겁니다.하위 요소의 크기와 상위 요소의 제약 조건에 따라 너비와 같은 값이 아닐 수 있습니다.

»는 다음과 같습니다.ActualWidth는 설정 시 바로 설정되지 .Width이겁니다.

언급URL : https://stackoverflow.com/questions/607827/what-is-the-difference-between-width-and-actualwidth-in-wpf 입니다.

반응형