Есть вот такой XAML:
<GridViewColumn Header="Name / Avatar" Width="120">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Border Name="avatarWrapper" BorderBrush="Gray" BorderThickness="1" Visibility="Hidden">
<Image Width="90" Height="90" Source="{Binding AvatarImageUrl, TargetNullValue={x:Null}}" />
</Border>
<TextBlock HorizontalAlignment="Center" Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Надо из кода обратиться к avatarWrapper
, чтобы изменить его свойства. Например - Visibility
. Просто по имени он его не видит.
Я так понимаю, это потому что оно в DataTemplate
обёрнуто
Пока вижу только один вариант - сделать в модели свойство public bool AvatarVisible;
и к нему привязать. Там еще конвертер из bool
в string
понадобится, наверное. Ну или свойство можно не bool
, а сразу string
сделать - не важно.
Есть ли способ, кроме как через привязку?
Добавлено через 2 часа
Видимо, нет Компонент же создаётся динамически для каждого элемента ListView. Получается как-бы массив этих компонентов. По-этому и по имени ко всем одновременно обратиться нельзя. Ну и ладно
Но тогда странно, что он вообще даёт задать имя.