2016-05-06 2 views
1

У меня есть меню для шаблонов в моем приложении, и внутри этого пункта есть элемент для удаления шаблонов. Когда нет существующих шаблонов, элемент меню отключен. Я привязал свойство IsEndabled к Templates.Count и все отлично работает в Windows 8 или 10, но в Windows 7 элемент не выделен серым цветом (но отключен).Disabled MenuItem не выделен серым цветом в Windows 7

Моя XAML для "Удалить шаблоны ..." пункт меню:

<MenuItem Header="{DynamicResource RemoveTemps}" 
      IsEnabled="{Binding Templates.Count, 
      Converter={StaticResource intToBoolConverter}}" 
      Command="{Binding RemoveTemplatesCommand, Mode=OneWay}"/> 

Snippent из класса ViewModel:

public class MainWindowViewModel : ObservableObject 
{ 
    private StringCollection _templates = Properties.Settings.Default.Templates; 
    public ObservableCollection<string> Templates { get; set; } = new ObservableCollection<string>(); 

    public MainWindowViewodel() 
    { 
     foreach (string s in _templates) 
     { 
      Templates.Add(s); 
     } 
    } 

} 

Если какая-либо информация не хватает для того, чтобы решить эту проблему, пожалуйста, Расскажи мне.

ответ

0

У меня была аналогичная проблема.

Пожалуйста, попробуйте добавить параметр

ли асинхронный к вашему связыванию:

https://msdn.microsoft.com/en-us/library/system.windows.data.binding.isasync(v=vs.110).aspx

Делает это, как этот

<MenuItem Header="{DynamicResource RemoveTemps}" 
      IsEnabled="{Binding Templates.Count, 
      Converter={StaticResource intToBoolConverter}}" 
      Command="{Binding RemoveTemplatesCommand, Mode=OneWay, IsAsync=True}"/> 

Это работает для меня.