I have solved the problem using a MultiBinding and a MultiValueConverter:
The ItemTemplate:
<DataTemplate>
<!-- ... -->
<TextBlock Text="This is the item we're working on.">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility"
Value="Hidden"/>
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource samenessConverter}">
<Binding ElementName="TheWorkspace"
Path="DataContext"/>
<Binding/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility"
Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<!-- ... -->
</DataTemplate>
The MultiValueConverter:
public class SamenessConverter : IMultiValueConverter {
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
return values.All(x => x == values[0]);
}
// ...
}