다음을 통해 공유


Binding 태그 확장

속성 값이 데이터 바인딩된 값이 되는 것을 지연하여 중간 식 개체를 만들고 런타임에 요소 및 해당 바인딩에 적용되는 데이터 컨텍스트를 해석합니다.

바인딩 식 사용

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

구문 참고 사항

이러한 구문에서 []*는 리터럴이 아닙니다. 이들은 bindProp=value 쌍을 사용할 수 있음을 나타내기 위한 표기법의 일부이며, bindProp=value 쌍 사이와 앞에 , 구분 기호가 있습니다.

"바인딩 확장으로 설정할 수 있는 바인딩 속성" 섹션에 나열된 속성은 대신 Binding 개체 요소의 특성을 사용하여 설정할 수 있습니다. 그러나 이것은 진정한 Binding의 태그 확장 사용이 아니라 CLR Binding 클래스의 속성을 설정하는 특성의 일반적인 XAML 처리일 뿐입니다. 다시 말해 <Binding bindProp1="value1"[ bindPropN="valueN"]*/>Binding 식 사용 대신 Binding 개체 요소 사용의 특성에 해당하는 구문입니다. Binding의 특정 속성의 XAML 특성 사용에 대해 알아보려면 .NET Framework 클래스 라이브러리에서 Binding 관련 속성의 "XAML 특성 사용" 섹션을 참조하세요.

XAML 값

설명
bindProp1, bindPropN Binding의 이름 또는 설정할 BindingBase 속성. 일부 Binding 속성은 Binding 확장으로 설정할 수 없으며, 일부 속성은 추가 중첩된 태그 확장을 사용해야만 Binding 식 내에서 설정할 수 있습니다. "바인딩 확장으로 설정할 수 있는 바인딩 속성" 섹션을 참조하세요.
value1, valueN 속성을 설정할 값. 특성 값의 처리는 궁극적으로 설정되는 특정 Binding 속성의 형식 및 논리에 따라 다릅니다.
path 암시적 Binding.Path 속성을 설정하는 경로 문자열. PropertyPath XAML 구문을 참조하세요.

정규화되지 않은 {Binding}

"바인딩 식 사용"에 표시된 {Binding} 사용은 null인 초기 Binding.Path를 포함하는 기본값을 사용하여 Binding 개체를 만듭니다. 만들어진 Binding이 런타임 데이터 컨텍스트에서 설정되는 Binding.PathBinding.Source와 같은 주요 데이터 바인딩에 의존할 수 있으므로 이는 여러 시나리오에서 여전히 유용합니다. 데이터 컨텍스트의 개념에 대한 자세한 내용은 데이터 바인딩을 참조하세요.

암시적 경로

Binding 태그 확장은 Path=가 식에 나타날 필요가 없는 개념적 "기본 속성"으로 Binding.Path를 사용합니다. 암시적 경로를 사용하여 Binding 식을 지정하는 경우 이름으로 Binding 속성이 지정되는 다른 어떤 bindProp=value 쌍보다 앞서 식에서 암시적 경로가 먼저 나타나야 합니다. 예: {Binding PathString}(여기서 PathString은 태그 확장 사용에 의해 만들어진 Binding에서 Binding.Path 값으로 평가되는 문자열입니다). 쉼표 구분 기호 뒤에 명명된 다른 속성과 함께 암시적 경로를 추가할 수 있습니다(예: {Binding LastName, Mode=TwoWay}).

바인딩 확장으로 설정할 수 있는 바인딩 속성

이 항목에 나온 구문은 Binding 태그 확장/식 구문을 통해 설정할 수 있는 BindingBase 또는 Binding의 읽기/쓰기 속성이 많기 때문에 제네릭 bindProp=value 근사값을 사용합니다. 암시적 Binding.Path를 제외하고 어떤 순서로도 설정할 수 있습니다. (명시적으로 Path=를 지정할 수 있는 옵션도 있습니다. 이 경우 어떤 순서로도 설정할 수 있습니다). 기본적으로 쉼표로 구분된 bindProp=value 쌍을 사용하여 아래 목록에서 0개 이상의 속성을 설정할 수 있습니다.

이러한 속성 값 중 일부는 XAML 텍스트 구문에서 네이티브 형식 변환을 지원하지 않는 개체 형식이 필요하므로 특성 값으로 설정하려면 태그 확장이 필요합니다. 자세한 내용은 각 속성의 .NET Framework 클래스 라이브러리의 XAML 속성 사용 섹션을 확인하세요. 추가 태그 확장 사용이 있거나 없는 XAML 특성 구문에 사용하는 문자열은 Binding 식에서 각 bindProp=value를 따옴표로 묶지 않는 점을 제외하고 기본적으로 Binding 식에서 지정하는 값과 동일합니다.

  • BindingGroupName: 가능한 바인딩 그룹을 식별하는 문자열입니다. 이것은 비교적 고급 바인딩 개념입니다. BindingGroupName의 참조 페이지를 참조하세요.

  • BindsDirectlyToSource: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다.

  • Converter: 식에서 bindProp=value 문자열로 설정할 수 있지만 그러려면 StaticResource 태그 확장과 같은 값의 개체 참조가 필요합니다. 이 경우 값은 사용자 지정 변환기 클래스의 인스턴스입니다.

  • ConverterCulture: 식에서 표준 기반 식별자로 설정할 수 있습니다. ConverterCulture의 참조 항목을 참조하세요.

  • ConverterParameter: 식에서 bindProp=value 문자열로 설정할 수 있지만 전달되는 매개 변수의 형식에 따라 달라집니다. 값의 참조 형식을 전달하는 경우 이 사용에는 중첩된 StaticResource 태그 확장과 같은 개체 참조가 필요합니다.

  • ElementName: 상호 배타적 대 RelativeSourceSource. 이러한 각 바인딩 속성은 특정 바인딩 방법론을 나타냅니다. 데이터 바인딩 개요를 참조하세요.

  • FallbackValue: 식에서 bindProp=value 문자열로 설정할 수 있지만 전달되는 값의 형식에 따라 달라집니다. 참조 형식을 전달하는 경우 중첩된 StaticResource 태그 확장과 같은 개체 참조가 필요합니다.

  • IsAsync: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다.

  • Mode: BindingMode 열거형의 상수 이름입니다. 예: {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다.

  • NotifyOnTargetUpdated: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다.

  • NotifyOnValidationError: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다.

  • Path: 데이터 개체 또는 일반 개체 모델의 경로를 설명하는 문자열입니다. 이 형식은 이 항목에서 충분히 설명할 수 없는 개체 모델을 트래버스하기 위한 몇 가지 규칙을 제공합니다. PropertyPath XAML 구문을 참조하세요.

  • RelativeSource: 상호 배타적 대 ElementNameSource. 이러한 각 바인딩 속성은 특정 바인딩 방법론을 나타냅니다. 데이터 바인딩 개요를 참조하세요. 값을 지정하려면 중첩된 RelativeSource MarkupExtension 사용이 필요합니다.

  • Source: 상호 배타적 대 RelativeSourceElementName. 이러한 각 바인딩 속성은 특정 바인딩 방법론을 나타냅니다. 데이터 바인딩 개요를 참조하세요. 중첩 확장 사용이 필요합니다. 일반적으로 키 지정된 리소스 사전의 개체 데이터 원본을 참조하는 StaticResource 태그 확장입니다.

  • StringFormat: 바인딩된 데이터의 문자열 형식 규칙을 설명하는 문자열입니다. 이것은 비교적 고급 바인딩 개념입니다. StringFormat의 참조 페이지를 참조하세요.

  • TargetNullValue: 식에서 bindProp=value 문자열로 설정할 수 있지만 전달되는 매개 변수의 형식에 따라 달라집니다. 값의 참조 형식을 전달하는 경우 중첩된 StaticResource 태그 확장과 같은 개체 참조가 필요합니다.

  • UpdateSourceTrigger: UpdateSourceTrigger 열거형의 상수 이름입니다. 예: {Binding UpdateSourceTrigger=LostFocus}. 특정 컨트롤에는 잠재적으로 이 바인딩 속성의 다른 기본값이 있습니다. UpdateSourceTrigger을 참조하세요.

  • ValidatesOnDataErrors: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다. 설명 부분을 참조하세요.

  • ValidatesOnExceptions: 부울로, true 또는 false일 수 있습니다. 기본값은 false입니다. 설명 부분을 참조하세요.

  • XPath: XML 데이터 원본의 XMLDOM 경로를 설명하는 문자열입니다. XMLDataProvider 및 XPath 쿼리를 사용하여 XML 데이터에 바인딩을 참조하세요.

다음은 Binding 태그 확장/{Binding}식 양식을 사용하여 설정할 수 없는 Binding의 속성입니다.

  • UpdateSourceExceptionFilter: 이 속성에는 콜백 구현에 대한 참조가 필요합니다. 이벤트 처리기 이외의 콜백/메서드는 XAML 구문에서 참조할 수 없습니다.

  • ValidationRules: 이 속성은 ValidationRule 개체의 제네릭 컬렉션을 사용합니다. Binding 개체 요소에서 속성 요소로 표현할 수 있지만 Binding 식에서 사용할 수 있는 특성 구문 분석 기법은 없습니다. ValidationRules 참조 항목을 참조하세요.

  • XmlNamespaceManager

설명

중요

종속성 속성 우선 순위 측면에서 Binding 식은 로컬로 설정된 값과 같습니다. 이전에 Binding 식이 있었던 속성의 로컬 값을 설정하면 Binding이 완전히 제거됩니다. 자세한 내용은 종속성 속성 값 우선 순위를 참조하세요.

기본 수준의 데이터 바인딩 설명은 이 항목에서 다루지 않습니다. 데이터 바인딩 개요를 참조하세요.

참고

MultiBindingPriorityBinding은 XAML 확장 구문을 지원하지 않습니다. 대신 속성 요소를 사용합니다. MultiBindingPriorityBinding 참조 항목을 참조하세요.

XAML의 부울 값은 대/소문자를 구분하지 않습니다. 예를 들어 {Binding NotifyOnValidationError=true} 또는 {Binding NotifyOnValidationError=True}를 지정할 수 있습니다.

데이터 유효성 검사를 포함하는 바인딩은 일반적으로 {Binding ...} 식이 아닌 명시적 Binding 요소에 의해 지정되며, 식에서 ValidatesOnDataErrors 또는 ValidatesOnExceptions를 설정하는 것은 일반적이지 않습니다. 도우미 속성 ValidationRules를 식 양식에서 쉽게 설정할 수 없기 때문입니다. 자세한 내용은 바인딩 유효성 검사 구현을 참조하세요.

Binding은 태그 확장입니다. 태그 확장은 일반적으로 특성 값을 리터럴 값 또는 처리기 이름이 아닌 다른 값이 되도록 이스케이프해야 하는 요구 사항이 있는 경우 구현되며, 이러한 요구 사항은 특정 형식 또는 속성에서 특성 사용되는 형식 변환기보다 더 포괄적입니다. XAML의 모든 태그 확장은 특성 구문에 {} 문자를 사용하며, 여기서 특성 구문은 XAML 프로세서가 태그 확장이 문자열 콘텐츠를 처리해야 함을 인식하는 데 사용하는 규칙입니다. 자세한 내용은 태그 확장 및 WPF XAML을 참조하세요.

Binding은 WPF의 XAML 구현에 대한 확장 기능을 구현하는 Binding 클래스가 XAML과 관련 없는 몇 가지 다른 메서드와 속성도 구현한다는 점에서 비정상적 태그 확장 입니다. 다른 멤버들은 XAML 태그 확장 역할을 하는 것 외에도 Binding을 많은 데이터 바인딩 시나리오를 해결할 수 있는 보다 다재다능한 자체 포함 클래스로 만들기 위한 것입니다.

참고 항목