К сожалению, есть способ сделать это так просто, как доступ к имени объекта. Предполагая, что вы используете привязку для заполнения этого шаблона данных, одним из вариантов было бы перебирать дочерние объекты родительского элемента управления и проверять текстовые поля на известное значение. Чуть более чистым может быть использование свойства Tag (которое может быть привязано к любому объекту) и делать сравнения таким образом.
Другой вариант (тот, который я чаще всего использую для таких вещей) должен был бы добавить свойство объекта, к которому вы привязываетесь, и привязать это свойство к видимости (при необходимости, используя конвертер). Например, если вы в настоящее время привязки к ObservableCollection < строки>, изменить связывание с ObservableCollection < StringWithVisibility> где 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 рухнул, просто измените его свойство видимости, которое рухнуло. У вас есть ссылка на него, так как вы его назвали. Это можно сделать в коде позади, где бы вы ни захотели это сделать. –