WPF liaison Dictionnaire<string, List<string> à la liste, ListBox comment?
comment lier Dictionnaire à la liste et zone de Texte?
namespace Models
{
public class DynamicList
{
#region Constructor
public DynamicList()
{
_propDict = new Dictionary<string, object>();
dynimicListProps = new List<DynimicListProperty>();
}
#endregion Constructor
#region Fields
private Dictionary<string, object> _propDict;
private IList<DynimicListProperty> dynimicListProps;
#endregion Fields
#region Properties
public Dictionary<string, object> PropsDict
{
get { return _propDict; }
set { _propDict = value; }
}
public string TestString
{
get { return "Hello! It's works!"; }
}
#endregion Properties
#region Methods
public void CreateProperties(string[] arrLine)
{
for (int i = 0; i < arrLine.Count(); i++)
{
_propDict.Add(arrLine[i].Replace("\"",""), null);
}
}
#endregion Methods
}
public class DynimicListProperty
{
private IList<string> propertyNameValues = new List<string>();
public IList<string> PropertyNameValues
{
get { return propertyNameValues; }
set { propertyNameValues = value; }
}
}
}
//now try to bind
private Models.DynamicList _dynimicList;
public Models.DynamicList _DynimicList
{
get { return _dynimicList; }
}
CreateView()
{
_importView = new Views.ImportBomView();
_importView.Grid1.DataContext = _DynimicList;
Binding bn = new Binding("Value.[2]");
bn.Mode = BindingMode.OneWay;
bn.Source = _DynimicList.PropsDict.Keys;
_importView.tbFileName.SetBinding(TextBlock.TextProperty, bn);
/////////////////////////////////////////////////////////////////////////////
//_importView.listView1.ItemsSource = (IEnumerable)_DynimicList.PropsDict["Value"];
//////it's works when Binding bn2 = new Binding("") but of course in
///this emplementation I have the same data in all columns - so not good
/////////////////////////////////////////////////////////////////////////////////////
//here I'll like to generate Columns and bind gvc.DisplayMemberBinding
//to dictionary _DynimicList.PropsDict[item] with Key=item
foreach (var item in _DynimicList.PropsDict.Keys)
{
Binding bn2 = new Binding("[3]");
bn2.Source = (IEnumerable)_DynimicList.PropsDict[item];
GridViewColumn gvc = new GridViewColumn();
gvc.DisplayMemberBinding = bn2;
gvc.Header = item;
gvc.Width = 100;
_importView.gridView1.Columns.Add(gvc);
}
_importView.Show();
}
}
OriginalL'auteur Janus | 2009-10-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire un datatemplate pour
KeyValuePair<string, List<string>>
et le mettre dans le ItemsTemplate de la racine ListView. Le ItemsSource de votre ListView serait votre dictionnaire. Dans ce datatemplate vous auriez un autre itemscontrol (comme une autre liste) permet de régler la itemstemplate à une zone de texte qui se lie à la chaîne. Sinon, vous pourriez utiliser un seul TreeView pour tout, en conjonction avec hiérarchique datatemplate. Vous pouvez faire un TreeView regarder autant que vous le souhaitez à l'aide de modèles.Et dans le code-behind de certaines données de l'échantillon:
Ajout d'un exemple de ma réponse.
S'il vous plaît marquer la question que d'y répondre.
idées sur la façon dont le code peut être modifié pour permettre à l'individu de valeurs dans le dictionnaire pour être sélectionné?
OriginalL'auteur bitbonk