Ответ 1
DataTrigger запускается, но поле Text для вашего второго TextBlock жестко закодировано как "выбранные элементы", поэтому он не сможет измениться. Чтобы увидеть это, вы можете удалить Text = "items selected".
Ваша проблема - хороший кандидат на использование ValueConverter вместо DataTrigger. Здесь, как создать и использовать ValueConverter, чтобы заставить его установить текст так, как вы хотите.
Создать этот 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}}"/>