禁用的MenuItem在Windows 7上不显示灰色

时间:2016-05-06 07:46:55

标签: c# wpf windows-7

我的应用程序中有一个模板菜单,里面有一个用于删除模板的菜单项。如果没有现有模板,则禁用菜单项。我将IsEndabled属性绑定到Templates.Count,一切都在Windows 8或10上完美运行,但在Windows 7上,该项目不会显示为灰色(但已禁用)。

我的xaml表示“删除模板...”菜单项:

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

来自ViewModel类的Snippent:

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);
        }
    }

}

如果缺少任何信息以解决问题,请告诉我。

1 个答案:

答案 0 :(得分: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}"/>

它对我有用。