2015-02-06 2 views
0

У меня есть один пользовательский элемент управления в моем WPF приложениеКак открыть пользовательский элемент управления в главном окне

<UserControl x:Class="NewWPFApp.ProgressControl" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="300"> 
<Grid> 
    <Expander Header="{Binding Path=Headerval}"> 
     <StackPanel Margin="10,4,0,0"> 
      <DataGrid 
      x:Name="dataGrid" 
      AutoGenerateColumns="False" 
      ItemsSource="{Binding Path=records}"/> 
     </StackPanel> 
    </Expander> 
</Grid> 

и в моем Mainwindow, когда я делаю это

<Window xmlns:NewWPFApp="clr-namespace:NewWPFApp" x:Class="NewWPFApp.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> 

    <ListBox x:Name="peopleListBox" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Grid Background="AliceBlue"> 
        <NewWPFApp:ProgressControl Height="100" Width="100"/> 
       </Grid> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 

    </ListBox> 
</Grid> 

Я не могу видеть выход. Если я удалю его из шаблона данных, он будет работать. Но не внутри шаблона данных.

Что мне не хватает ???

Благодаря

+0

Вы предоставили шаблон для элементов ListBox, но вы не создали никаких элементов? –

+0

Мне нужно добавить коллекцию моего usercontrol в список. – Rohit

ответ

0

ListBox.ItemTemplate определяет, как будут отображаться элементы, добавленные в список. В вашем случае вы используете свой собственный пользовательский элемент управления. Тем не менее, в то же время вы не добавили никаких элементов в список, поэтому отобразить нечего. Для заполнения поля списка вы можете использовать привязку например .:

<ListBox ItemsSource="{Binding ItemsToBeDisplayed}" x:Name="peopleListBox" > 
    ... 
</ListBox> 

Где ItemsToBeDisplayed это свойство модели вида (если вы используете MVVM шаблон), который возвращает коллекцию объектов. Если вы не можете заполнить ItemsSource без использования привязки:

var list = new List<People>(); 
//Add objects to a list 
peopleListBox.ItemsSource = list; 

Я предположил, что у вас есть People класса, модели люди, которых вы хотите отобразить в приложении. People класс должен обладать Headerval и records свойствами, поскольку вы используете их в своем управлении ProgressControl. Если вы сделаете так, как описано, новый экземпляр вашего элемента управления ProgressControl будет создан для каждого объекта в ItemsSource.

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