2013-09-17 6 views
1

В начале я покажу некоторый код:Связывание ItemsControl с ScrollViewer

private ObservableCollection<otwarteBezStolika> otwarteBezStolika = new ObservableCollection<otwarteBezStolika>(); 

     public ObservableCollection<otwarteBezStolika> listunia 
     { 
      get { return otwarteBezStolika; } 
      set { otwarteBezStolika = value; } 
     } 
    } 
    public class otwarteBezStolika 
    { 
     public string number { get; set; } 
     public string date { get; set; } 
     public int orderID { get; set; } 
     public decimal price { get; set; } 
     public decimal priceR { get; set; } 
     public string opisRach { get; set; } 
     public string sum { get; set; } 
    } 

А теперь в XAML:

<Window.Resources> 
    <DataTemplate x:Key="dataTempl"> 
     <Border BorderBrush="Coral" BorderThickness="1" Width="170"> 
      <Button Name="goToPOS" Tag="{Binding orderID}" Click="goToPOS_Click" Style="{StaticResource TabCloseButtonStyle}" Margin="1"> 
       <StackPanel> 
        <Label Content="{Binding number}" HorizontalAlignment="Center" FontSize="15" FontWeight="ExtraBold" HorizontalContentAlignment="Center"></Label> 
        <Border BorderBrush="Turquoise" BorderThickness="1" Width="170"></Border> 
        <Label Content="{Binding date}" FontSize="12" HorizontalAlignment="Center"></Label> 
        <TextBlock Text="{Binding opisRach}" FontStyle="Italic" FontSize="12" Foreground="Black" TextAlignment="Center" TextWrapping="Wrap" Margin="0,0,0,2"></TextBlock> 
        <Border BorderBrush="WhiteSmoke" BorderThickness="1" Width="170"></Border> 
        <Label Content="{Binding sum}" FontSize="19" HorizontalAlignment="Center"></Label> 
       </StackPanel> 
      </Button> 
     </Border> 
    </DataTemplate> 

    <DataTemplate x:Key="mainTemplate"> 
     <StackPanel> 

      <ItemsControl x:Name="imageContent" ItemsSource="{Binding listunia}" ItemTemplate="{StaticResource dataTempl}" > 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <WrapPanel Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
      </ItemsControl> 
     </StackPanel> 
    </DataTemplate> 
</Window.Resources> 

Сетка:

<Grid Grid.Row="0"> 
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
      <ItemsControl Name="templ" ItemsSource="{Binding ElementName=UI, Path=listunia }" ItemTemplate="{StaticResource mainTemplate}" /> 
     </ScrollViewer> 
    </Grid> 

Проблема заключается в том, что я не могу см. любой элемент (я заполняю элементы с помощью sqldatareader и добавляю их в список - кстати, работает ли DataTable?) Вместо этого while (rd r.Read()) я мог Уз SqlDataAdapter СОУ и sda.fill (DataTable))

Вторая проблема заключается в том, что она работает, когда я ставлю "dataTempl" внутри ScrollViewer, как:

<Grid Grid.Row="0"> 
     <ScrollViewer VerticalScrollBarVisibility="Auto"> 
      <ItemsControl Name="templ" ItemsSource="{Binding ElementName=UI, Path=listunia }" ItemTemplate="{StaticResource dataTempl}" /> 
     </ScrollViewer> 
    </Grid> 

но элементы отображаются вертикально, но мне нужно видеть их слева направо.

Спасибо за ответы!

ответ

2

Попробуйте сделать это .. вам не нужна maintemplate.

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <ItemsControl Name="templ" ItemsSource="{Binding ElementName=UI, Path=listunia }" ItemTemplate="{StaticResource dataTempl}"> 
    <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Vertical" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
      </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    </ItemsControl> 
</ScrollViewer> 

ИЛИ вы можете просто использовать:

<ListBox Name="templ" ItemsSource="{Binding ElementName=UI, Path=listunia }" ItemTemplate="{StaticResource dataTempl}"> 
    </ListBox> 
+0

Хорошо, он показывает товар сейчас - но только один на середине экрана :) Я изменил, что StackPanel widht и высотой до 150/70, и я уверен, он должен показать еще , becouse "listunia" имеют 71 товар – user13657

+0

Действительно ли он? сколько у вас предметов? как вы устанавливаете datacontext представления? и последнее, что является элементом «UI» :)? – Nitin

+0

Извините, 76 не 71. Я могу показать их правильно, используя вертикальный/горизонтальный переход, но похоже, что ширина прокрутки не установлена ​​правильно. Элементы теперь отображаются как: [] [] [] [] [] [] [] [] [] [] [] [] [] [], а не как [] [] [] [] "enter" [] [] [] [] «enter» [] [] [] [] «enter» [] [] [] [] :) – user13657

0

Это будет отображаться в моноширинный шрифт. Первые четыре пространства

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
     <ItemsControl Name="kaloo" DisplayMemberPath="Name" ss:DragDrop.IsDragSource="True" ss:DragDrop.IsDropTarget="True" > 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapPanel /> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
</ScrollViewer> 

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

  • Нет связанных вопросов^_^