은 불행하게도, 명명 된 객체를 접근으로이 같은 간단한 작업을 수행하는 방법이 있습니다. 바인딩을 사용하여이 데이터 템플릿을 채우고 있다고 가정하면 부모 컨트롤의 자식 개체를 반복하고 알려진 값과 비교하여 텍스트 필드를 확인하는 옵션이 있습니다. 약간의 클리너는 Tag 속성 (모든 객체에 바인딩 될 수 있음)을 사용하여 비교할 수 있습니다.
또 다른 옵션 (가장 자주 사용하는 옵션)은 바인딩하려는 개체에 속성을 추가하고 해당 속성을 가시성에 바인딩하는 것입니다 (필요한 경우 변환기 사용). 당신이 현재 ObservableCollection에 < 문자열>에 결합하는 경우 예를 들어, StringWithVisibility이 보이는 ObservableCollection에 < StringWithVisibility> 바인딩을 변경 같은 :
public class StringWithVisibility
{
public string Text {get; set;}
public bool IsVisible {get; set;}
}
그리고 템플릿 보이는 같은 :
<DataTemplate>
<StackPanel x:Name="stackPanelItems" Orientation="Horizontal">
<TextBlock Text="{Binding Text}" Visibility={Binding IsVisible, Converter={StaticResource BoolVisibilityConverter}} />
</StackPanel>
</DataTemplate>
그리고 적절한 IValueConverter를 리소스로 생성했습니다. 당신이 컨버터에 익숙하지 않은 경우, 워드 프로세서 현재 위치 : http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(VS.95).aspx
시나리오는 무엇입니까? – slugster
@ Slugster, 데이터 템플릿 안에 4 개의 다른 텍스트 상자가 있고 다른 버튼 클릭에서 Visibiliti 옵션을 바꾸고 싶습니다. – Simsons
귀하의 질문대로 이해가되지 않습니다. myTextBox라는 텍스트 블록을 축소하려면 축소 된 속성 인 yo를 변경하십시오. 이름을 지은 이후에 참조가 있습니다. 이 작업은 코드에서 수행 할 수 있습니다. –