One possible solution is adding DisplayMemberBinding attribute to GridViewColumn. The Binding Path in each DisplayMemberBinding attribute should be the same name as the property you want to map in the object. Each property also gets its own GridViewColumn.
Changed this XAML:
<ListView x:Name="lvClients" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="300" >
<ListView.View>
<GridView>
<GridViewColumn/>
</GridView>
</ListView.View>
</ListView>
To this:
<ListView x:Name="lvClients" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="300" >
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Path=ID}"/>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/>
</GridView>
</ListView.View>
</ListView>