x:Reference와 ElementName의 차이점은 무엇입니까?
MSDN의 x:Reference Markup Extension 페이지에 따르면x:Reference
XAML 마크업으로 선언된 인스턴스를 참조합니다.참조는 요소의 x:Name을 참조합니다.
제본에 따라.MSDN의 [Element Name Property]페이지,ElementName
Name 속성 값 또는 관심 요소의 x:Name 지시어 값.
첫 페이지의 비고 섹션을 다시 살펴봅니다.
x: 레퍼런스 및 WPF
WPF 및 XAML 2006에서는 요소 참조는 ElementName 바인딩의 프레임워크레벨 기능에 의해 처리됩니다.대부분의 WPF 응용 프로그램 및 시나리오에서는 ElementName 바인딩을 계속 사용해야 합니다.이 일반적인 지침의 예외에는 데이터 바인딩이 실용적이지 않고 마크업 컴파일이 포함되지 않는 데이터 컨텍스트 또는 기타 범위 지정 고려사항이 있을 수 있다.
'비고하다'의 설명하겠습니다.ElementName
링크:
이 속성은 응용 프로그램의 다른 요소의 속성에 바인딩하려는 경우에 유용합니다.예를 들어, 슬라이더를 사용하여 응용 프로그램에서 다른 컨트롤의 높이를 제어하거나 컨트롤의 내용을 ListBox 컨트롤의 SelectedValue 속성에 바인딩하려는 경우입니다.
이제 '는 잘 , '언제 쓸지'는 잘 있습니다.ElementName
를 완전히 하지 못한다, property property 、 는 property 、 는 property 、 property property 、 property property 、 property property property property property property 。x:Reference
분, 설명해주실 수 요?그리고 . 특히, 마지막 문장을 확대해주시면 됩니다.x:Reference
고 : :
이 일반적인 지침의 예외에는 데이터 바인딩이 실용적이지 않고 마크업 컴파일이 포함되지 않는 데이터 컨텍스트 또는 기타 범위 지정 고려사항이 있을 수 있다.
기본적으로 당신이 말한 것처럼 그 둘은 거의 같은 일을 합니다.그러나 후드 아래에는 작은 차이가 있습니다.
{x:Reference ...}
두 의 "브릿지 수합니다.-> "브릿지"는 "브릿지"로 사용할 수 없습니다.그 이면에는 특정 범위(통상은 창 자체)에서 지정된 이름을 검색하는 서비스가 사용되고 있습니다.
{Binding ElementName="..." }
-> 먼저 바인딩 오브젝트를 작성한 후 오브젝트 이름을 검색하지만 x:Reference와 같은 기술을 후드 아래에 사용하여 검색하지 않습니다.검색 알고리즘이 VisualTree에서 위아래로 이동하여 원하는 요소를 찾습니다.따라서 항상 기능하는 Visual Tree가 필요합니다.예를 들어 Non-UiElement 내에서 사용하면 작동하지 않습니다.결국 바인딩은 남아서 매일 빵을 먹는다.
이렇게 하면 안 돼요.
<StackPanel>
<Button x:name="bttn1" Visibility="Hidden">Click me</Button>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding ElementName=bttn1, Path=DataContext.Visibility}"/>
....
이 방법은 다음과 같습니다.
<StackPanel>
<Button x:name="bttn1" Visibility="Hidden">Click me</Button>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Source={x:Reference bttn1}, Path=DataContext.Visibility}"/>
....
그런 셈이죠:)
ElementName
플랫폼 고유합니다.즉, 사용하고 있는 플랫폼에 따라서는 존재하거나 존재하지 않을 수 있습니다. x:Reference
는 이 개념을 XAML 네이티브 기능으로 업그레이드합니다.따라서 XAML을 지원하는 플랫폼은x:Reference
.
2023년을 기점으로 상황이 변한 것 같아요MS x:Reference Markup Extension 페이지에 다음과 같이 표시됩니다.x:Reference
컴파일된 WPF 파일에서는 사용할 수 없습니다.
x:Reference는 XAML 2009에서 정의된 구성입니다.WPF에서는 XAML 2009 기능을 사용할 수 있지만 WPF 마크업 컴파일되지 않은 XAML에만 사용할 수 있습니다.마크업 컴파일된 XAML 및 XAML의 BAML 형식은 현재 XAML 2009 언어 키워드 및 기능을 지원하지 않습니다.
그렇게x:Reference
VS의 빌드 액션 속성에 대해 "페이지"로 설정된 XAML 파일(또는 "컴파일" 및 기타로 설정됨)에서는 피해야 합니다.
예를 들어 MainWindow.xaml의 빌드 액션은 새로운 WPF 프로젝트에서 기본적으로 "페이지"로 설정됩니다.
언급URL : https://stackoverflow.com/questions/19244111/what-is-the-difference-between-xreference-and-elementname
'source' 카테고리의 다른 글
iOS 시뮬레이터에서 테스트하는 동안 오류 발생:부트스트랩 서버에 등록할 수 없습니다. (0) | 2023.04.10 |
---|---|
속사포 (0) | 2023.04.10 |
iPhone에서 SMS를 프로그래밍 방식으로 전송하는 방법 (0) | 2023.04.10 |
꺼내기 요청 vs 병합 요청 (0) | 2023.04.10 |
Windows 시스템에 대용량 파일 빠르게 생성 (0) | 2023.04.10 |