반응형
WPF 연결 속성 데이터 바인딩
연결된 속성으로 바인딩을 사용하려고합니다. 그러나 그것을 작동시킬 수 없습니다.
public class Attached
{
public static DependencyProperty TestProperty =
DependencyProperty.RegisterAttached("TestProperty", typeof(bool), typeof(Attached),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Inherits));
public static bool GetTest(DependencyObject obj)
{
return (bool)obj.GetValue(TestProperty);
}
public static void SetTest(DependencyObject obj, bool value)
{
obj.SetValue(TestProperty, value);
}
}
XAML 코드 :
<Window ...>
<StackPanel local:Attached.Test="true" x:Name="f">
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}" />
<CheckBox local:Attached.Test="true" IsChecked="{Binding (local:Attached.Test), Mode=TwoWay}" />
</StackPanel>
</Window>
그리고 바인딩 오류 :
System.Windows.Data Error: 40 : BindingExpression path error: '(local:Attached.Test)' property not found on 'object' ''StackPanel' (Name='f')'. BindingExpression:Path=(local:Attached.Test); DataItem='StackPanel' (Name='f'); target element is 'CheckBox' (Name=''); target property is 'IsChecked' (type 'Nullable`1')
믿거 나 말거나 Path=
, 연결된 속성에 바인딩 할 때 괄호를 추가 하고 사용하십시오.
IsChecked="{Binding Path=(local:Attached.Test), Mode=TwoWay, RelativeSource={RelativeSource Self}}"
또한에 대한 호출 RegisterAttached
은 "TestProperty"가 아닌 속성 이름으로 "Test"를 전달해야합니다.
나는 이것을 Kent의 대답에 대한 주석으로 게시하는 것을 선호했지만 그렇게 할 충분한 담당자가 없기 때문에 ... WPF 4.5부터는 Path=
더 이상 추가 할 필요가 없다는 것을 지적하고 싶었습니다 . 그러나 연결된 속성 이름은 여전히 괄호로 둘러싸 야합니다.
괄호를 넣는 것이 작동합니다. 나는 부모의 바인딩 자동화 ID를해야했다 contentcontrol
A를 textblock
의를 datatemplate
. 자동화 ID는 연결된 속성입니다.
속성을 대괄호로 묶고 바인딩이 작동했습니다.
AutomationProperties.AutomationId="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContentControl},Path=(AutomationProperties.AutomationId)}"
참고 URL : https://stackoverflow.com/questions/5832208/wpf-attached-property-data-binding
반응형
'Program Tip' 카테고리의 다른 글
jQuery.validation에서 같지 않음 규칙을 추가하는 방법 (0) | 2020.11.29 |
---|---|
웹킷에 예기치 않은 토큰이 잘못되었습니다. (0) | 2020.11.29 |
Chrome에서 CSS3 계산 (100 % -88px)이 작동하지 않음 (0) | 2020.11.29 |
''로 문장을 분할하고 주변 공백을 제거합니다. (0) | 2020.11.29 |
정수 배열을 자바 스크립트의 문자열 배열로 변환 (0) | 2020.11.29 |