2015-07-19 112 views
1

我已經在XAML中這樣寫:列表框不顯示項目C#XAML

<ListBox x:Name="WorkersList"> 
 
      <ListBox.ItemTemplate> 
 
       <DataTemplate> 
 
        <StackPanel Orientation="Horizontal"> 
 
         <TextBlock Text="{Binding name}"></TextBlock> 
 
         <TextBlock Text="{Binding gehalt}"></TextBlock> 
 
        </StackPanel> 
 
       </DataTemplate> 
 
      </ListBox.ItemTemplate> 
 
     </ListBox>

然後我編寫了一個名爲 「工人」 C#類,並增加了follwing代碼到mainpage.cs :

public sealed partial class MainPage : Page 
{ 



    public MainPage() 
    { 
     this.InitializeComponent(); 
     List<Worker> sourceworkerlist = new List<Worker>(); 
     sourceworkerlist.Add(new Worker { name = "Franz", gehalt = 200 }); 
     WorkersList.DataContext = sourceworkerlist; 
    } 
} 

我跑的程序,但結果是我沒有看到一個ListBoxItem :(我是怎麼對你的答案做錯了THX

?!

回答

1

如果你想在你的代碼中使用DataContext背後張貼,那麼你的XAML應該是這樣的:

​​

這是完整的XAML文件:

<Window 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:WpfApplication11" mc:Ignorable="d" 
    x:Class="WpfApplication11.MainWindow" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <ListBox x:Name="WorkersList" d:DataContext="{d:DesignInstance {x:Type local:Worker}}" ItemsSource="{Binding Mode=OneWay}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding name}"/> 
         <TextBlock Text="{Binding gehalt}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Window> 
+0

感謝您的回答,它的工作原理,但我得到了一個錯誤在Windows 10通用平臺的XAML - 即時建設:類型不支持...我如何需要更改數據上下文? –

+0

我編輯了我的答案併發布了整個XAML文件內容。您可能會缺少一些xml命名空間(xlmns)。檢查你的XAML對我的。 – jsanalytics

+0

它通過保留datacontext代碼行,我已經聲明它在c# - >上面看起來) –

1

您需要將ItemsSource綁定到DataSource,或者在代碼中設置ItemsSource。

WorkersList.ItemsSource = sourceworkerlist; 

<ListBox x:Name="WorkersList" ItemsSource="{Binding}"> 
+0

已經做到了 - l ook上面在我的代碼 –

+0

@MatthiasHerrmann不,你沒有做我沒有提出的解決方案,你沒有'ItemsSource =「{Binding}'也沒有'WorkersList.ItemsSource = sourceworkerlist;' – FINDarkside

+0

哦,sry(它已經結束35°C在這裏;)我讀過它,你說得對sry –