2015-07-19 2 views
1

я написал это в XAML:Listbox не показывает элементы 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>

Тогда я написал переменного тока # класс под названием «рабочий» и добавил 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 должен выглядеть следующим образом:

<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> 

Это полный файл 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

Спасибо за ваш ответ, он работает, но я получаю сообщение об ошибке в здании xaml-im для универсальной платформы Windows 10: тип не поддерживается ... как мне нужно изменить контекст данных? –

+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 здесь;) я перепробовал его, youre right sry –

Смежные вопросы