바인딩 태그 확장

참고 항목

성능 및 개발자 생산성에 최적화된 새 바인딩 메커니즘을 Windows 10에 사용할 수 있습니다. {x:Bind} 태그 확장을 참조하세요.

참고 항목

앱에서 {Binding}과 함께 데이터 바인딩을 사용하는 방법 및 {x:Bind}{Binding} 간 비교에 대한 일반 정보는 데이터 바인딩 심층 분석을 참조하세요.

{Binding} 태그 확장은 코드 등 데이터 원본에서 가져온 값에 컨트롤의 속성을 데이터 바인딩하는 데 사용됩니다. {Binding} 태그 확장은 XAML 로드 시간에 Binding 클래스의 인스턴스로 변환됩니다. 이 바인딩 개체는 데이터 원본의 속성에서 값을 가져오고 컨트롤의 속성으로 푸시합니다. 데이터 원본 속성 값의 변경 내용을 관찰하고 해당 변경 내용에 따라 자체적으로 업데이트하도록 바인딩 개체를 선택적으로 구성할 수 있습니다. 필요에 따라 변경 내용을 컨트롤 값으로 다시 원본 속성으로 푸시하도록 구성할 수도 있습니다. 데이터 바인딩의 대상인 속성은 종속성 속성이어야 합니다. 자세한 내용은 종속성 속성 개요를 참조하세요.

{Binding} 는 로컬 값과 동일한 종속성 속성 우선 순위를 가지며 명령적 코드에서 로컬 값을 설정하면 태그에 설정된 모든 {Binding} 의 효과가 제거됩니다.

XAML 특성 사용

<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
용어 설명
propertyPath 바인딩의 속성 경로를 지정하는 문자열. 자세한 내용은 속성 경로 섹션을 참조하세요.
bindingProperties propName=[, propName=]*
이름/값 쌍 구문을 사용하여 지정된 하나 이상의 바인딩 속성.
propName Binding 개체에 설정할 속성의 문자열 이름입니다. 예: "Converter"
value 속성을 설정할 값. 인수 구문은 아래 { Binding} 섹션으로 설정할 수 있는 Binding 클래스의 Properties 속성에 따라 달라집니다.

속성 경로

Path는 소스 속성에 바인딩할 속성에 대해 설명합니다. 경로는 위치 매개 변수입니다. 즉, 매개 변수 이름을 명시적으로({Binding Path=EmployeeID}) 사용하거나 이름 없는 첫 번째 매개 변수({Binding EmployeeID})로 지정할 수 있습니다.

Path형식은 사용자 지정 형식 또는 프레임워크 형식의 속성 또는 하위 속성으로 계산되는 문자열인 속성 경로입니다. 형식은 DependencyObject수 있지만 필요하지는 않습니다. 속성 경로의 단계는 점(.)으로 구분되므로 연속적인 하위 속성을 트래버스하기 위해 여러 구분 기호를 포함할 수 있습니다. 바인딩할 개체를 구현하는 데 사용되는 프로그래밍 언어에 관계없이 점 구분 기호를 사용합니다.

예를 들어 UI를 직원 개체의 이름 속성에 바인딩하려면 속성 경로가 "Employee.FirstName"일 수 있습니다. 직원의 부양가족을 포함하는 속성에 항목 컨트롤을 바인딩하는 경우 속성 경로는 "Employee.Dependents"일 수 있으며 항목 컨트롤의 항목 템플릿은 "Dependents" 항목의 표시를 담당합니다.

데이터 원본이 컬렉션인 경우 속성 패치가 컬렉션에서 위치 또는 색인별로 항목을 지정할 수 있습니다. 예를 들어 "Teams[0].Players"에서 리터럴 "[]"는 컬렉션의 첫 번째 항목을 지정하는 "0"을 묶습니다.

기존 DependencyObject에 ElementName 바인딩을 사용하는 경우 연결된 속성을 속성 경로의 일부로 사용할 수 있습니다. 연결된 속성 이름의 중간 점이 속성 경로의 단계로 간주되지 않도록 연결된 속성을 명확히 하려면 소유자로 한정된 연결된 속성 이름 주위에 괄호를 붙입니다. 예를 들면 다음과 같습니다 (AutomationProperties.Name).

속성 경로 중간 개체는 런타임 표현에서 PropertyPath 개체로 저장되지만 대부분의 시나리오에서는 코드에서 PropertyPath 개체와 상호 작용할 필요가 없습니다. 일반적으로 XAML을 사용하여 필요한 바인딩 정보를 지정할 수 있습니다.

속성 경로의 문자열 구문, 애니메이션 기능 영역의 속성 경로 및 PropertyPath 개체 생성에 대한 자세한 내용은 속성 경로 구문을 참조하세요.

{Binding}을(를) 사용하여 설정할 수 있는 Binding 클래스의 속성

{Binding} 태그 확장에서 설정할 수 있는 Binding의 읽기/쓰기 속성이 여러 개 있기 때문에 bindingProperties 자리 표시자 구문과 함께 설명됩니다. 쉼표로 구분된 propName=value 쌍으로 순서에 상관없이 속성을 설정할 수 있습니다. 일부 속성에는 형식 변환이 없는 형식이 필요하므로 {Binding}에 중첩된 고유한 태그 확장이 필요합니다.

속성 설명
Path 위의 속성 경로 섹션을 참조하세요.
변환기 바인딩 엔진에서 호출되는 변환기 개체를 지정합니다. 변환기는 {StaticResource} 태그 확장을 사용하여 태그에서 설정하여 리소스 사전에서 해당 개체를 참조할 수 있습니다.
ConverterLanguage 변환기가 사용할 문화권을 지정합니다. (설정하는 경우변환기.) 문화권은 표준 기반 식별자로 설정됩니다. 자세한 내용은 ConverterLanguage를 참조 하세요.
ConverterParameter 변환기 논리에 사용할 수 있는 변환기 매개 변수를 지정합니다. (설정하는 경우변환기.) 대부분의 변환기는 변환하기 위해 전달된 값에서 필요한 모든 정보를 가져오는 간단한 논리를 사용하며 ConverterParameter 값이 필요하지 않습니다. ConverterParameter 매개 변수는 ConverterParameter에서 전달된 내용을 해제하는 조건부 논리가 있는 보다 복잡한 변환기 구현을 위한 것입니다. 문자열이 아닌 값을 사용하는 변환기를 작성할 수도 있지만 일반적이지 않습니다. 자세한 내용은 ConverterParameter에서 설명을 참조하세요.
ElementName Name 속성 또는 x:Name 특성이 있는 동일한 XAML 구문의 다른 요소를 참조하여 데이터 원본을 지정합니다. 관련 값을 공유하거나 한 UI 요소의 하위 속성을 사용하여 다른 요소에 대한 특정 값(예: XAML 컨트롤 템플릿)을 제공하는 데 자주 사용합니다.
FallbackValue 원본 또는 경로를 확인할 수 없을 때 표시할 값을 지정합니다.
모드 바인딩 모드를 "OneTime", "OneWay" 또는 "TwoWay" 값 중 하나로 지정합니다. 이러한 이름은 BindingMode 열거형의 상수 이름에 해당합니다. 기본값은 "OneWay"입니다. 이는 "OneTime"인 {x:Bind}의 기본값과 다릅니다.
RelativeSource 바인딩 대상의 위치를 기준으로 바인딩 원본의 위치를 설명하여 데이터 원본을 지정합니다. XAML 컨트롤 템플릿 내의 바인딩에서 가장 자주 사용됩니다. {RelativeSource} 태그 확장 설정
Source 개체 데이터 원본을 지정합니다. 바인딩 태그 확장 내에서 Source 속성에는 {StaticResource} 태그 확장 참조와 같은 개체 참조가 필요합니다. 이 속성을 지정하지 않으면 동작 데이터 컨텍스트가 원본을 지정합니다. 개별 바인딩에서 원본 값을 지정하지 않고 여러 바인딩에 대해 공유 DataContext 를 사용하는 것이 더 일반적입니다. 자세한 내용은 DataContext 또는 데이터 바인딩을 자세히 참조하세요.
TargetNullValue 원본 값이 확인되지만 명시적으로 null이 아닌 경우 표시할 값을 지정합니다.
UpdateSourceTrigger 바인딩 소스 업데이트의 타이밍을 지정합니다. 지정되지 않은 경우 기본값은 기본값입니다.

참고 태그를 {x:Bind}에서 {Binding}으로 변환하는 경우 Mode 속성에 대한 기본값의 차이점에 유의하세요.

Converter, ConverterLanguageConverterLanguage는 모두 바인딩 소스에서 바인딩 대상 속성과 호환 되는 형식 또는 값으로 값 또는 형식을 변환 하는 시나리오와 관련이 있습니다. 자세한 내용과 예제는 데이터 바인딩 심층 분석의 "데이터 변환" 섹션을 참조하세요.

참고 항목

Windows 10 버전 1607부터 XAML 프레임워크는 기본 제공 부울-표시 변환기를 제공합니다. 변환기는 Visible 열거형 값에 true를, Collapsedfalse를 매핑하므로 변환기를 만들지 않고 Visibility 속성을 부울에 바인딩할 수 있습니다. 기본 제공 변환기를 사용하려면 앱의 최소 대상 SDK 버전이 14393 이상이어야 합니다. 앱이 이전 버전의 Windows 10을 대상으로 하는 경우 기본 제공 변환기를 사용할 수 없습니다. 대상 버전에 대한 자세한 내용은 버전 적응 코드를 참조하세요.

Source, RelativeSourceElementName은 바인딩 소스를 지정하므로 상호 배타적입니다.

Path 또는 ConverterParameter와 같은 값에 대해 단일 중괄호를 지정해야 하는 경우 백슬래시를 \{사용하여 앞에 섰습니다. 또는 보조 따옴표 집합에서 이스케이프해야 하는 괄호가 포함된 전체 문자열을 다음과 같이 묶습니다. ConverterParameter='{Mix}'.

예제

<!-- binding a UI element to a view model -->    
<Page ... >
    <Page.DataContext>
        <local:BookstoreViewModel/>
    </Page.DataContext>

    <GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
    <Page.Resources>
        <local:S2Formatter x:Key="GradeConverter"/>
    </Page.Resources>

    <Slider x:Name="sliderValueConverter" ... />
    <TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
        Mode=OneWay,
        Converter={StaticResource GradeConverter}}"/>
</Page>

두 번째 예제에서는 ElementName, Path, Mode 및 Converter네 가지 바인딩 속성을 설정합니다. 이 경우 경로는 바인딩 속성으로 명시적으로 이름이 지정됩니다. 경로는 동일한 런타임 개체 트리의 다른 개체인 데이터 바인딩 원본인 슬라이더 평가됩니다sliderValueConverter.

Converter 속성 값이 다른 태그 확장인 {StaticResource} 태그 확장을 사용하는 방법을 확인합니다. 따라서 여기에 두 개의 중첩 태그 확장 사용이 있습니다. 내부가 먼저 평가되므로 리소스를 가져온 후에는 바인딩에서 사용할 수 있는 실용적인 IValueConverter (리소스의 요소에 의해 local:S2Formatter 인스턴스화된 사용자 지정 클래스)가 있습니다.

도구 지원

Microsoft Visual Studio의 Microsoft IntelliSense는 XAML 태그 편집기에서 {Binding}을 작성하는 동안 데이터 컨텍스트의 속성을 표시합니다. "{Binding"을 입력하는 즉시 경로적합한 데이터 컨텍스트 속성이 드롭다운에 표시됩니다. IntelliSense는 바인딩다른 속성에도 도움이 됩니다. 이렇게 하려면 태그 페이지에 데이터 컨텍스트 또는 디자인 타임 데이터 컨텍스트가 설정되어 있어야 합니다. 정의로 이동(F12)도 {Binding}에서 작동합니다. 또는 데이터 바인딩 대화 상자를 사용할 수 있습니다.