我具有以下實體:綁定枚舉屬性值ListView.Items(的WinForms)
public class MyEntity
{
public int Id {get;set}
public Color SelectedColors
}
MyEntity
具有Color
枚舉One-to-Many
關係。
[Flags]
public enum Color
{
None=1,
White=2,
Red=3,
Blue=4
}
在其它字,每myEntity
對象可具有一個或多個值從Color
枚舉:
myEntity1.Color = Color.Red | Color.White;
我使用Entity Framewrok
保存該數據:
using (var ctx = new MyContext())
{
var entity1 = new MyEntity { SelectedColors = Color.Blue | Color.White };
ctx.MyEntities.Add(entity1);
ctx.SaveChanges();
}
,並使用讀取它以下代碼:
using (var ctx = new MyContext())
{
var entity1 = ctx.MyEntities.Find(id);
}
我想說明的chechboxes
選擇的顏色由蜱,
我用了一個ListView
控制(WinForms項目)做這個工作:
listView1.CheckBoxes = true;
listView1.HeaderStyle = None;
listView1.View = List;
,並使用下面的代碼來顯示所有Enum
值ListView.Items
:
foreach (var value in Enum.GetValues(typeof(Color)).Cast<Color>())
{
listView1.Items.Add(new ListViewItem()
{
Name = value.ToString(),
Text = value.ToString(),
Tag = value
});
}
有什麼方法可以將我的查詢結果的SelectedColors
值綁定到listView1.Items
?
[更新]
我看到了一個解決方案,那this link繼承Nick-K新的控制從ListView
。我認爲這種解決方案對我來說並不好,因爲繼承的控件採用DataSource
和DataMember
,那麼我應該怎樣設置DataMember
(我的情況是SelectedColors
可能有多個值)?
的可能的複製[是否有可能一個列表綁定到的WinForms一個ListView?(http://stackoverflow.com/questions/2799017/is-it-possible-to-bind-a -list到一個-列表視圖-IN- winforms) – MSL
爲了使用數據綁定,您需要一個控件和一個具有相同類型屬性的實體,在您的案例'Color'中。看起來你沒有別的選擇,只能從'ListView'(或'CheckedListBox')繼承自定義控件。 然後你的'DataSource'是實體,'DataMember'是'SelectedColors'。不要擔心列表事物,因爲[Flags] enum'實際上不是一個列表,即使它可以有多個值。試着想象它就像一個整數,你可以按給定的名字單獨設置和取消設置每一位。 例如無:0000,白色:0001,白色| Blue:0101 –