C0ZEN
C0ZEN

Reputation: 934

How add a control in a GridViewColumn?

I have a ListView with 3 columns.
In the first and second, I add a simply string by Binding. It works.
Now, I want to add in my ListViewColumn a border with canvas.

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>

Unfortunately, this is not working.
My Canvas is display correctly, but in the header instead of the content like my string.

How can I add my border/canvas in each line correctly ?
Thanks !

Upvotes: 0

Views: 324

Answers (2)

SamTh3D3v
SamTh3D3v

Reputation: 9944

add the GridViewColumn CellTemplate as well

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

Upvotes: 0

dkozl
dkozl

Reputation: 33364

You need to define 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>

Upvotes: 1

Related Questions