2015-02-04 3 views
0

У меня есть ListView с 3 колонками.
В первом и втором я добавляю просто строку с помощью Binding. Оно работает.
Теперь, я хочу добавить в мой ListViewColumn a border с canvas.Как добавить элемент управления в GridViewColumn?

XAML:

<ListView x:Name="EntreesListView" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Entrées" Width="Auto" DisplayMemberBinding="{Binding Nom}"/> 
       <GridViewColumn Header="Prix" Width="Auto" DisplayMemberBinding="{Binding Prix}"/> 
       <GridViewColumn Width="Auto"> 
        <Border x:Name="MoinsBorder" Background="White" BorderBrush="Black" BorderThickness="1" Width="18" Height="18" CornerRadius="10"> 
         <Canvas x:Name="MoinsCanvas"> 
          <Path Width="10" Height="3" Canvas.Left="3" Canvas.Top="6" Stretch="Fill" Fill="Black" Data="F1 M 19,38L 57,38L 57,44L 19,44L 19,38 Z"/> 
         </Canvas> 
        </Border> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
</ListView> 

К сожалению, это не работает.
Мой Canvas отображается правильно, но в заголовке вместо содержимого, такого как моя строка.

Как я могу добавить свой border/canvas в каждую строку правильно?
Спасибо!

ответ

1

Вам нужно определить CellTemplate

<ListView x:Name="EntreesListView" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Entrées" Width="Auto" DisplayMemberBinding="{Binding Nom}"/> 
      <GridViewColumn Header="Prix" Width="Auto" DisplayMemberBinding="{Binding Prix}"/> 
      <GridViewColumn Width="Auto"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <Border x:Name="MoinsBorder" Background="White" BorderBrush="Black" BorderThickness="1" Width="18" Height="18" CornerRadius="10"> 
          <Canvas x:Name="MoinsCanvas"> 
           <Path Width="10" Height="3" Canvas.Left="3" Canvas.Top="6" Stretch="Fill" Fill="Black" Data="F1 M 19,38L 57,38L 57,44L 19,44L 19,38 Z"/> 
          </Canvas> 
         </Border> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

Спасибо я попробую прямо сейчас. – C0ZEN

+1

Черт! Именно то, что мне нужно. Быстрый и очень хороший ответ, спасибо много чувак! – C0ZEN

0

добавить GridViewColumnCellTemplate а

<ListView x:Name="EntreesListView" ItemsSource="{Binding DataGridItems}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Entrées" Width="Auto" DisplayMemberBinding="{Binding Nom}"/> 
       <GridViewColumn Header="Prix" Width="Auto" DisplayMemberBinding="{Binding Prix}"/> 
       <GridViewColumn Width="Auto"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <Border x:Name="MoinsBorder" Background="White" BorderBrush="Black" BorderThickness="1" Width="18" Height="18" CornerRadius="10"> 
           <Canvas x:Name="MoinsCanvas"> 
            <Path Width="10" Height="3" Canvas.Left="3" Canvas.Top="6" Stretch="Fill" Fill="Black" Data="F1 M 19,38L 57,38L 57,44L 19,44L 19,38 Z"/> 
           </Canvas> 
          </Border> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
        <Border x:Name="MoinsBorder" Background="White" BorderBrush="Black" BorderThickness="1" Width="18" Height="18" CornerRadius="10"> 
         <Canvas x:Name="MoinsCanvas"> 
          <Path Width="10" Height="3" Canvas.Left="3" Canvas.Top="6" Stretch="Fill" Fill="Black" Data="F1 M 19,38L 57,38L 57,44L 19,44L 19,38 Z"/> 
         </Canvas> 
        </Border> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 
Смежные вопросы