2014-10-28 145 views
0

比方說,我有一個包含屬性的枚舉:WPF C# - 綁定枚舉到組合框,但不使用所有枚舉值

public enum MyEnum 
{ 
    Yes, 
    No, 
    None 
} 

我可以很容易地將這些值綁定到一個組合框。但是,假設我想省略「無」的值 - 那麼最好的方法是什麼?

+0

你如何填充'ItemSource'?通過某種轉換器?如果是,那麼改變它以省略'None' – dkozl 2014-10-28 12:22:21

+0

你肯定必須用***代碼隱藏***填充項目(使用反射),所以過濾掉某些值只是一件小事。 – 2014-10-28 12:24:33

+0

全部添加,然後刪除選定的? – 2014-10-28 12:24:40

回答

4

您可以使用Enum.GetValues()然後Cast得到一個IEnumerable,然後過濾根據要忽略的那些結果,e.g:

var items = Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>() 
       .Where(e => e != MyEnum.None); 
+1

爲什麼'ToString()'而不只是'e => e!= MyEnum.None'?這裏並不是一個真正的問題,但將ToList()或ToArray()附加到任何用作項目源的查詢也是一種很好的做法,否則可能會重新評估它。 – 2014-10-28 12:52:47

+1

沒有特別的原因,我在沒有調試器的情況下寫得非常快,但這也應該起作用,這個概念仍然存在,並且很容易理解。謝謝你的提示。 – DGibbs 2014-10-28 14:11:16