C# WPF-填充列表视图
我有一个2列的ListView,我正在尝试使用和IDictionary用以下代码填充它C# WPF-填充列表视图,c#,listview,add,C#,Listview,Add,我有一个2列的ListView,我正在尝试使用和IDictionary用以下代码填充它 System.Collections.IDictionary entryList = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User); foreach (System.Collections.DictionaryEntry de in entryList) { Row row = new Row(); r
System.Collections.IDictionary entryList = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User);
foreach (System.Collections.DictionaryEntry de in entryList)
{
Row row = new Row();
row.Name1 = (string)de.Key;
row.Name2 = (string)de.Value;
this.list1.Items.Add(row);
}
public class Row
{
public string Name1 { get; set; }
public string Name2 { get; set; }
}
XAML:
但是每一行和每一列都被“Project.Views.row”填满。
有人知道怎么修吗?非常感谢。当给定要显示的对象时,一个列表视图(以及与此相关的所有其他控件)将显示调用ToString
的结果
对于标准类,这是它的限定名称;示例中的Project.Views.Row
有两种方法可以解决此问题:
不要添加对象。相反,请根据需要格式化字符串,即:
list1.Items.Add(String.Format({0}:{1}, row.Name1, row.Name2));
使用正确的方法并使用MVVM。在这种情况下,您的XAML需要一个数据模板:
<ListView ItemsSource="{Binding Rows}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name1}"/>
<TextBlock Text="{Binding Name2}"/>
</StackPanel>
</DataTemplate>
<ListView.ItemTemplate>
</ListView>
对于栅格视图:
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name1}" />
<GridViewColumn Header="Path" DisplayMemberBinding="{Binding Name2}"/>
</GridView>
</ListView.View>
绑定ItemsSource
实际上是没有必要的,但是因为我们做的一切都是正确的,所以您应该这样做,这样您就不会直接从代码操作UI。您在字典中存储的是什么类型?我正在存储一个IDictionary。。。我实际上是在使用返回的Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User)XAML添加。。。我最近加入了开发团队,他们没有在任何列表/网格上使用任何数据源。。。我只是保持这种方式,因为他们是这样做的(@LucasBertone他们做错了。在你的团队中永远成为变革的力量!:)@BradleyDotNET正在努力:D@LucasBertone没问题。我没有对绑定系统给出非常透彻的解释,所以请务必阅读关于带WPF的MVVM的内容;你会更好地理解如何生成这个。是的。。。我会仔细研究一下,下次把一切都做好
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name1}" />
<GridViewColumn Header="Path" DisplayMemberBinding="{Binding Name2}"/>
</GridView>
</ListView.View>