Setter를 사용하여 DataTrigger 내부에 확장기 IsExpanded 속성을 설정하려고합니다. 내가 "자기"또는 같은 몇 가지 키워드를 원요소 자체의 속성을 설정할 수 있습니까?
TargetName="myExpander"
같은 코드를 작성할 때
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander x:Name="myExpander" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=myExpander, Path=IsKeyboardFocusWithin}" Value="False">
<Setter TargetName="Self" Property="IsExpanded" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
문제는 "." - Setter 타겟을 부모의 엘리먼트와 연관시켜 그것을 찾는 것. (후자는 일하는 것이 비록) 나는 SourceName
보다는 DataTrigger
와 Trigger
을 사용
<ItemsControl.ItemTemplate>
<DataTemplate>
<Expander x:Name="myExpander" />
<DataTemplate.Triggers>
<Trigger SourceName="myExpander" Property="IsKeyboardFocusWithin" Value="False">
<Setter TargetName="myExpander" Property="IsExpanded" Value="False" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
참고 :
TargetName을 생략 할 수 있습니다. 목표는 자기를 의미하지 않습니다. –
TargetName을 생략하면 컴파일 오류가 발생합니다. 그것은 템플릿 속성 'IsExpanded'를 찾을 수 없다고 말합니다. –
트리거는 한 가지이며, '확장기'는 다른 것입니다. 그것들은 * 사용하기 쉬운 관계에 있지 않습니다 (그것은 '자기'또는 '상대 소스'가 아닙니다). 그리고 참조 요소에 이름을 사용하는 것이 좋습니다. 이름을 가지고있는 문제는 무엇입니까? – Sinatr