我的应用程序中有一个模板菜单,里面有一个用于删除模板的菜单项。如果没有现有模板,则禁用菜单项。我将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);
}
}
}
如果缺少任何信息以解决问题,请告诉我。
答案 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}"/>
它对我有用。