2017-07-11 32 views
1

我处于适用多种显示模式的情况。 喜欢的东西:C#如何优先考虑多种显示模式?

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”之前。

+0

你对他们使用了不同的'ContextCondition'吗?或者你有两个相同的?如果不是系统会猜测什么时候显示哪个问题。 –

+0

@MarcinCiesla'ContextCondition's不同,但都评估为'true'。我将更新问题以更好地反映这一点。谢谢 – Bruno

+0

好吧,让我们进一步处理您的情况。 您是否100%确定在您达到显示模式时只有一种情况发生? 要实现正确的显示模式,您需要确保只有满足这个条件。 如果您将** A **条件和** B **条件设置为true,则应用程序仍然令人困惑。 –

回答

0

您可以通过设置适当的指数确定其优先级:

DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("a") 
{ 
    ContextCondition = context => AFunctionThatReturnsTrue() 
}); 

DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("b") 
{ 
    ContextCondition = context => ADifferentFunctionThatReturnsTrue() 
}); 

这应保证模式一个即使满足两个条件才可以提供。

编辑: 这不支持任何官方文件,但我在我的项目中试过,它的工作。

+0

嗯...这不适合我。另外我不明白这与仅仅改变'insert'的顺序有什么不同 – Bruno