На самом деле с этим кодом много чего не так.Во-первых, я понятия не имею, что должен делать этот триггер, похоже, что контрольная таблица будет установлена, только если в списке нет элементов?
Во-вторых, похоже, что вы пытаетесьпредставлять каждый элемент в коллекции с изображением и текстом, все в ItemsControl.Вы делаете это не с помощью шаблонов всего элемента управления, а с помощью шаблонов ItemTemplate.И вы используете DataTemplate, а не ControlTemplate:
Теперь, возвращаясь к вашему актуальному вопросу, вы хотите получать уведомления при каждом нажатии TextBlock.Существует множество различных способов сделать это, но в этом случае вы также можете заменить этот TextBlock на кнопку, а затем переопределить шаблон на ControlTemplate, который представляет его как TextBlock.Это дает вам лучшее из обоих миров: с точки зрения графического интерфейса это все еще текстовый блок, но вы по-прежнему получаете все уведомления о нажатиях кнопок и обработчик команд и т. Д .:
<Image />
<Button Command="{Binding ClickedCommand}" Cursor="Hand">
<Button.Template>
<ControlTemplate>
<TextBlock Text="Text Binding Goes Here" />
</ControlTemplate>
</Button.Template>
</Button>
В этом конкретном примере предполагается, что элементы вваша коллекция имеет обработчик команд под названием «ClickedCommand».На практике ваш обработчик может находиться в родительском классе (например, в модели представления основного окна), и в этом случае вам нужно будет указать топор главного окна: Name (например, "_this") и вместо этого связать его, передав элемент вкак CommandParameter, чтобы он знал, какой из них был нажат:
<Button Command="{Binding ElementName=_this, Path=DataContext.ClickedCommand}" CommandParameter="{Binding}" Cursor="Hand">
И тогда ваша модель основного вида имеет обработчик, который выглядит примерно так:
public ICommand ClickedCommand { get { return new RelayCommand<YourCollectionItemType>(OnClicked); } }
private void OnClicked(YourCollectionItemType item)
{
}