2016-04-04 115 views
0

我正在制作一个简单的Windows窗体应用程序。在我的列表视图中,我想显示三件事情;日期,时间和描述。我现在这样做:基本字符串格式化c#

task = date + time + description; 

(任务,日期,时间,描述都是字符串)。

这给结果:

enter image description here

但我想要的是让这些字符串显示以下不同的类别,这样的事情:

enter image description here

怎么会去关于将3个字符串(日期,时间,描述)格式化为一个(任务),以便它们显示在图片2中?

+4

是一个正常的'TextBox'控制?具有3列的ListView可能更好,更容易格式化。 –

+0

您是如何显示绑定数据的?它看起来像'task'是一个单独的字符串。但是,如果你有三个单独的值,并希望以列/表格格式显示它们,那么创建一个包含这三个值的对象并将一个“ListView”或“GridView”或类似的东西绑定到那些对象。 – David

回答

1

这里有一个扩展的例子给你。

虽然您可能会找到一种方法来连接字符串,然后通过将它们显示在列表视图以外的其他位置来正确地将其间隔开来,但列表视图将成为您的最佳选择。

您的代码看起来这一个类似于:

public partial class MainWindow : Window 
{ 

    //Your data 
    private string date = "2016-04-04"; 
    private string time = "20:20"; 
    private string description = "poop"; 

    //Declare a list 
    public List<object> myList { get; set; } 


    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = this; 

     //Instantiate your list 
     myList = new List<object>(); 

     //Make a new object 
     var listObject = new 
     { 
      newDate = date, 
      newTime = time, 
      newDescription = description 
     }; 

     //Add that object to your list 
     myList.Add(listObject); 
    } 
} 

而且你的XAML来显示结果:

<Window x:Class="WpfApplicationTestApp.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListView x:Name="listView" ItemsSource="{Binding myList}"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Date" DisplayMemberBinding="{Binding newDate}"/> 
        <GridViewColumn Header="Time" DisplayMemberBinding="{Binding newTime}"/> 
        <GridViewColumn Header="Description" DisplayMemberBinding="{Binding newDescription}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </Grid> 
</Window> 
+0

非常丰富的答案,谢谢 – Taegos

1

+连接的项目将执行正常的字符串连接,这就是为什么您将所有内容都集中在一起。

要做你要求的,你必须添加一个新的ListViewItem你在构造函数中指定一个字符串数组。每个阵列元素表示ListView柱:{column 1, column 2, column 3, etc...}

例如:

ListView1.Items.Add(new ListViewItem(new string[] {date, time, description})); 

MSDN文档为ListViewItem(string[])构造:https://msdn.microsoft.com/en-us/library/faw83h4f(v=vs.110).aspx

1

需要设置View:Details从ListView的特性,得到网格式的样子。当您创建一个ListItem时,它被视为第一列的数据,随后的SubItems被视为该特定ListItem的额外列。试试这个例子。

ListViewItem lvi; 
for (int i = 0; i < 10; i++) 
{ 
    lvi = new ListViewItem(); 
    lvi.Text = "first column"; 
    lvi.SubItems.Add("second column"); 
    lvi.SubItems.Add("third column"); 
    listView1.Items.Add(lvi); 
}