DataTrigger запускается, но текстовое поле для вашего второго TextBlock жестко закодировано как «выбранные элементы», поэтому оно не сможет измениться. Чтобы увидеть стрельбу, вы можете удалить Text = "items selected".
Ваша проблема является хорошим кандидатом для использования ValueConverter вместо DataTrigger . Вот как можно создать ValueConverter и использовать его, чтобы установить для Text то, что вы хотите.
Создать этот ValueConverter:
public class CountToSelectedTextConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((int)value == 1)
return "item selected";
else
return "items selected";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Добавьте ссылку на пространство имен для вашей сборки, в которой находится конвертер:
xmlns:local="clr-namespace:ValueConverterExample"
Добавьте конвертер в свои ресурсы:
<Window.Resources>
<local:CountToSelectedTextConverter x:Key="CountToSelectedTextConverter"/>
</Window.Resources>
Измените свой второй текстовый блок на:
<TextBlock Text="{Binding ElementName=EditListBox, Path=SelectedItems.Count, Converter={StaticResource CountToSelectedTextConverter}}"/>