我的情况是,多种显示模式适用。 像这样:
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("a")
{
ContextCondition = context => AFunctionThatReturnsTrue()
});
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("b")
{
ContextCondition = context => ADifferentFunctionThatReturnsTrue()
});
我所经历的是,在这种情况下,始终应用显示模式"b"。 问题是:我必须做什么才能选择显示模式"a"?
我尝试过但没有奏效的:
我尝试更改注册顺序。
我尝试更改显示模式的名称,以便显示模式"b"按字母顺序排列在"a"之前。
您可以通过设置适当的索引来确定它的优先级:
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("a")
{
ContextCondition = context => AFunctionThatReturnsTrue()
});
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("b")
{
ContextCondition = context => ADifferentFunctionThatReturnsTrue()
});
这应确保即使同时满足两个条件,模式A也将在B之前提供。
编辑:这没有任何官方文档的支持,但我在我的项目中尝试过它并且它有效。