비고
성능 및 개발자 생산성에 최적화된 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}" .../>
기간 | 설명 |
---|---|
속성 경로 | 바인딩의 속성 경로를 지정하는 문자열입니다. 자세한 내용은 아래 의 속성 경로 섹션에 있습니다. |
바인딩 프로퍼티 |
propName=값[, propName=값]* 이름/값 쌍 구문을 사용하여 지정된 하나 이상의 바인딩 속성입니다. |
propName | Binding 개체에 설정할 속성의 문자열 이름입니다. 예를 들어 "변환기"입니다. |
값 | 속성을 설정할 값입니다. 인수 구문은 아래 { Binding} 섹션으로 설정할 수 있는 Binding 클래스의 Properties 속성에 따라 달라집니다. |
속성 경로
경로 는 바인딩하는 속성(원본 속성)을 설명합니다. 경로는 위치 매개 변수입니다. 즉, 매개 변수 이름을 명시적으로({Binding Path=EmployeeID}
) 사용하거나 이름 없는 첫 번째 매개 변수({Binding EmployeeID}
)로 지정할 수 있습니다.
사용자 지정 형식 또는 프레임워크 형식의 속성이나 하위 속성을 나타내는 문자열인 경로의 형식은 속성 경로입니다. 형식은 DependencyObject일 수 있지만, 반드시 그럴 필요는 없습니다. 속성 경로의 단계는 점(.)으로 구분되며 여러 구분 기호를 포함하여 연속 하위 속성을 트래버스할 수 있습니다. 바인딩되는 개체를 구현하는 데 사용되는 프로그래밍 언어에 관계없이 점 구분 기호를 사용합니다.
예를 들어 UI를 직원 개체의 이름 속성에 바인딩하려면 속성 경로가 "Employee.FirstName"일 수 있습니다. 항목 컨트롤을 직원의 종속이 포함된 속성에 바인딩하는 경우 속성 경로는 "Employee.Dependents"일 수 있으며 항목 컨트롤의 항목 템플릿은 "Dependents"에 항목을 표시하는 것을 처리합니다.
데이터 원본이 컬렉션인 경우 속성 경로는 해당 위치 또는 인덱스로 컬렉션의 항목을 지정할 수 있습니다. 예를 들어 "Teams[0].Players"에서, 리터럴 "[]"은 컬렉션의 첫 번째 항목을 지정하는 "0"을 감쌉니다.
기존 DependencyObject에 ElementName 바인딩을 사용할 때, 연결된 속성을 속성 경로에 포함시킬 수 있습니다. 연결된 속성 이름의 중간 점이 속성 경로의 단계로 간주되지 않도록 연결된 속성을 명확히 하려면 소유자로 한정된 연결된 속성 이름 주위에 괄호를 붙입니다. 예를 들어 (AutomationProperties.Name)
.
속성 경로 중간 개체는 런타임 표현에서 PropertyPath 개체로 저장되지만 대부분의 시나리오에서는 코드에서 PropertyPath 개체와 상호 작용할 필요가 없습니다. 일반적으로 XAML을 사용하여 필요한 바인딩 정보를 지정할 수 있습니다.
속성 경로의 문자열 구문, 애니메이션 기능 영역의 속성 경로 및 PropertyPath 개체 생성에 대한 자세한 내용은 속성 경로 구문을 참조하세요.
{Binding}을(를) 사용하여 설정할 수 있는 Binding 클래스의 속성
{Binding}
재산 | 설명 |
---|---|
경로 | 위의 속성 경로 섹션을 참조하세요. |
변환기 | 바인딩 엔진에서 호출되는 변환기 개체를 지정합니다. 변환기는 리소스 사전의 해당 개체를 참조하기 위해 |
ConverterLanguage | 변환기에서 사용할 문화권을 지정합니다. (Converter설정하는 경우 .) 문화권은 표준에 기반한 식별자로 설정됩니다. 자세한 내용은 ConverterLanguage를 참조하세요. |
ConverterParameter | 변환기 논리에 사용할 수 있는 변환기 매개 변수를 지정합니다. (Converter설정하는 경우) 대부분의 변환기는 전달된 값에서 필요로 하는 모든 정보를 가져오는 간단한 논리를 사용하며, ConverterParameter 값이 필요하지 않습니다. ConverterParameter 매개 변수는 ConverterParameter에 전달된 값을 기반으로 하는 조건부 논리가 있는 보다 복잡한 변환기 구현을 위한 것입니다. 문자열 이외의 값을 사용하는 변환기를 작성할 수 있지만 일반적이지는 않습니다. 자세한 내용은 ConverterParameter 의 비고를 참조하세요. |
ElementName | Name 속성 또는 x:Name 특성이 있는 동일한 XAML 구문의 다른 요소를 참조하여 데이터 원본을 지정합니다. 관련 값을 공유하거나 한 UI 요소의 하위 속성을 사용하여 다른 요소에 대한 특정 값(예: XAML 컨트롤 템플릿)을 제공하는 데 자주 사용합니다. |
FallbackValue | 원본 또는 경로를 확인할 수 없는 경우 표시할 값을 지정합니다. |
모드 | 바인딩 모드를 "OneTime", "OneWay" 또는 "TwoWay" 값 중 하나로 지정합니다. 이러한 이름은 BindingMode 열거형의 상수 이름에 해당합니다. 기본값은 "OneWay"입니다. 이는 "OneTime"인 {x:Bind}의 기본값과 다릅니다. |
RelativeSource | 바인딩 대상의 위치를 기준으로 바인딩 원본의 위치를 설명하여 데이터 원본을 지정합니다. XAML 컨트롤 템플릿 내의 바인딩에서 가장 자주 사용됩니다. {RelativeSource} 태그 확장설정합니다. |
원본 | 개체 데이터 원본을 지정합니다. 바인딩 태그 확장 내에서 Source 속성에는 {StaticResource} 태그 확장 참조와 같은 개체 참조가 필요합니다. 이 속성을 지정하지 않으면 동작 데이터 컨텍스트가 원본을 지정합니다. 개별 바인딩에서 원본 값을 지정하지 않고 여러 바인딩에 대해 공유 DataContext 를 사용하는 것이 더 일반적입니다. 자세한 내용은 DataContext 또는 데이터 바인딩의 심층적인를 참조하세요. |
TargetNullValue | 원본 값이 확인되지만 명시적으로 null일 때 표시할 값을 지정합니다. |
UpdateSourceTrigger | 바인딩 소스 업데이트의 타이밍을 지정합니다. 지정되지 않은 경우 기본값은 기본입니다. |
참고 마크업을 {x:Bind} 에서 {Binding}으로 변환하는 경우, Mode 속성의 기본값 차이점에 유의하세요.
Converter, ConverterLanguage 및 ConverterLanguage 는 모두 바인딩 소스에서 바인딩 대상 속성과 호환되는 형식 또는 값으로 값 또는 형식을 변환하는 시나리오와 관련이 있습니다. 자세한 내용과 예제는 데이터 바인딩의 "데이터 변환" 섹션을 참조하세요.
비고
Windows 10 버전 1607부터 XAML 프레임워크는 Boolean에서 Visibility로의 변환기를 기본적으로 제공합니다. 변환기는 true을 Visible 열거형 값에 매핑하고 false를 Collapsed에 매핑하므로, 변환기를 만들지 않고도 Visibility 속성을 Boolean에 바인딩할 수 있습니다. 기본 제공 변환기를 사용하려면 앱의 최소 대상 SDK 버전은 14393 이상이어야 합니다. 앱이 이전 버전의 Windows 10을 대상으로 하는 경우에는 사용할 수 없습니다. 대상 버전에 대한 자세한 내용은 버전 적응 코드참조하세요.
Source, RelativeSource, 그리고 ElementName은 바인딩 소스를 지정하므로 서로 함께 사용할 수 없습니다.
팁경로 또는 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의 네 가지 바인딩 속성을 설정합니다. 이 경우 경로 는 명시적으로 Binding 속성으로 명명됩니다. 경로는 동일한 런타임 개체 트리 내의 또 다른 객체인 데이터 바인딩 원본으로 평가되는데, 이 원본은 이라는 이름의 입니다.
local:S2Formatter
요소에 의해 인스턴스화된 사용자 지정 클래스)가 있습니다.
Tools 지원
Microsoft Visual Studio의 Microsoft IntelliSense는 XAML 태그 편집기에서 {Binding} 을 작성하는 동안 데이터 컨텍스트의 속성을 표시합니다. "{Binding}”을 입력하는 즉시, 드롭다운에 경로에 적합한 데이터 컨텍스트 속성이 표시됩니다. IntelliSense는 바인딩의 다른 속성에도 도움을 줍니다. 이렇게 하려면 마크업 페이지에서 데이터 컨텍스트 또는 디자인 타임 데이터 컨텍스트가 설정되어 있어야 합니다. 정의로 이동 (F12) 기능도 {Binding}와 함께 작동합니다. 또는 데이터 바인딩 대화 상자를 사용할 수 있습니다.