Dictionary<string, List<string>>
benim WPF veri kılavuzuma doğru düzen ile bağlanırken sorun yaşıyorum. WPF MVVM Bind Sözlük <String, Liste <String>> datagrid'e göre
Bu
benim veri nesnesidir:public class MainViewModel
{
public MainViewModel()
{
var partners = new Dictionary<string, List<string>>
{
{"Company", new List<string> {"company1", "company2"}},
{"Operator", new List<string> {"false", "true"}},
{"Interest", new List<string> {"40%", "60%"}},
{"Type", new List<string> {"type1", "type2"}}
};
Asset = new Result("TestType", "TestName", partners);
}
public Result Asset { get; set; }
}
ben Partners
sözlüğü bağlamak çalışıyorum: Ben kukla verilerle doldurulur ve benim ViewModel bir kamu malı olarak gözler önüne serdi
public class Result
{
public Result(string type, string name, Dictionary<string, List<string>> partners)
{
Type = type;
Name = name;
Partners = partners;
}
public string Type { get; set; }
public string Name { get; set; }
public Dictionary<string, List<string>> Partners { get; set; }
}
benim datagrid'im. Her sözlük girişinin (örneğin Şirket/Operatör/İlgi Alanı/Tür) Key
, veri kılavuzumun başlıklarını, sütunları dolduran ilgili değerler ile oluşturmalıdır. Bunun gibi:
Company | Operator | Interest | Type
company1 false 40% type1
company2 true 60% type2
Bunu nasıl başarabilirim? this question'a bakıyorum ama veri nasıl istediğimden başka bir şey değil. Anahtarlarım datagrid sütun başlıkları olarak istiyorum (başlık özelliklerinin veri bağlamayı kullanamayacağına inanıyorum). Bu ItemSource doğru bağlıdır, ancak ihtiyacım formatta veri almak için nasıl bilmiyorum, şimdiye kadar benim XAML: Ben ilk sütun için Binding="{Binding Value[0]}
kullanırsanız
<DataGrid x:Name="dg" ItemsSource="{Binding Asset.Partners}" AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridTextColumn Header="Company" Binding="{Binding ?}"/>
<DataGridTextColumn Header="Operator" Binding="{Binding ?}"/>
<DataGridTextColumn Header="Interest" Binding="{Binding ?}"/>
<DataGridTextColumn Header="Type" Binding="{Binding ?}"/>
</DataGrid.Columns>
</DataGrid>
, o zaman olsun, bir " sütunumdaki değerler satırını, ancak diğer şekilde yuvarlak olmasını istiyorum. Ayrıca Binding="{Binding Asset.Partners[Company]}"
kullanmayı denedim ama bu işe yaramadı.
Herhangi bir yardım için teşekkür ederiz.
Sözlükleri bağlamalarda kullanmayın. Birkaç farklı nedenden ötürü emerler. Anahtar/değer çiftlerinizi tutmak ve onları bir Gözlemlenebilir Koleksiyon haline getirmek için belirli bir tür oluşturun. Eğer nerdly bir programcı iseniz, bir sözlük yararları sağlayan ama büyük emmeksizin INOTifyCollectionChanged uygulayan KeyedCollection bir uygulama yaratabilirsiniz. \ –
Will
@Will - onlar bana "emmek" söylemek özellikle yararlı değildir nedenini söylemeden. – Courlu
En az biriyle karşılaştığınız birkaç nedenden dolayı emiyorlar. Diğerleri, DataTemplates'in gücünü, değişiklik bildirimini vb. Karıştırmayı içerir. Öğrendikleriniz gibi, emerler. Açıkçası, daha önemli olan anahtarlı koleksiyon hakkında benim tavsiyem. Git ona bak, ve zamanlarını sözlüklerle boşa harcama. – Will