[英]I need to display data from a dictionary of objects each with their own dictionary on a DataGrid using WPF with Caliburn.Micro
因此,我有一個Dictionary<string, Language>
,它是語言的集合,每種語言都包含以語言名稱為鍵的BindableCollection<Translation>
。 Translation
只是一個包含鍵和值的數據模型。 它基本上是一本字典,但是我需要將鍵和值綁定到文本框。 所有語言都具有相同的鍵列表。 我希望能夠將ItemsSource綁定到我的Dictionary<string, Language>
並使其輸出類似以下內容。
Key | English | Spanish | ...
______________________________________________
username | Username |Nombre de usuario | ...
我發現能夠執行此操作的唯一方法是將所有數據放入DataTable,但是我需要能夠編輯,添加和刪除列和行。 試圖連接自定義事件處理以使我的數據和DataGrid保持同步,我的代碼變得一團糟,我需要找出一個更好,更易管理的解決方案。 感謝您抽出寶貴的時間來幫助您。
這看起來好像不需要幾行代碼就可以處理。 無論如何,我會:
Dictionary<string, Language>
創建模型 List<TranslationsRow>
創建一個ViewModel TranslationsRow看起來像這樣:
class TranslationsRow
{
public string Key;
public string English;
public string Spanish;
public string German:
// and so on...
}
List<TranslationsRow>
您必須自己編寫模型( Dictionary<string, Language>
)和ViewModel( List<TranslationsRow>
)之間的映射關系。 (在SQL中,這將是PIVOT / UNPIVOT操作)。
我認為這是ViewModel代表View“轉換” Model數據的完美示例。
如果我理解正確,那么您將擁有一本字典,該字典想在使用Caliburn Micro的ShellViewModel時綁定到TextBox。
為了進行綁定,我必須要做的就是將它們全部設置在ShellView后面的代碼中。 所以我在Window name = tb1上有一個文本框。 在構造函數中,我編寫了代碼:
InitializeComponent();
tb1.DataContext = ViewModels.ShellViewModel.myDictionary;
然后在tb1 XAML中設置綁定:
Text={Binding [myKey].myProperty, Mode=TwoWay}
我必須為每個人這樣做。 為每個文本框命名\\在其后的代碼\\綁定它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.