A: 

Please check an example below, it should give you an idea on how to proceed

xaml

    <ListView x:Name="checkList" Height="100" Margin="129,168,187,43">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical">
                    <CheckBox Content="name" IsChecked="{Binding Checked, Mode=TwoWay}" />
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Elevation" />
                        <TextBox Text="{Binding Text}" />
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

you can bind it to the list of objects with Checked and Text properties. Below is an example:

        public class CheckBoxListItem
        {
            public bool Checked { get; set; }
            public string Text { get; set; }

            public CheckBoxListItem(bool ch, string text)
            {
                Checked = ch;
                Text = text;
            }
        }

<...>

List<CheckBoxListItem> items1 = new List<CheckBoxListItem>();
items1.Add(new CheckBoxListItem(true, "test1"));
items1.Add(new CheckBoxListItem(false, "test2"));
checkList.ItemsSource = items1;

hope this helps, regards

serge_gubenko
This would put only checkboxes in Settings column - I need one checkbox for the first item and a textbox for the other.
Martin
A: 
<ListView Name="listView">
 <ListView.View>
     <GridView>
           <GridViewColumn  Header="Name">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Name}" Width="Auto"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
             </GridViewColumn>
        <GridViewColumn  Header="Settings" >
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                  <StackPanel>
                   <CheckBox Text="{Binding Path=CheckProperty}" Width="Auto" />
                       <TextBox Text="{Binding Path=TextProperty}" Width="Auto" />
                   </StackPanel>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
    </GridView>

 </ListView.View>

</ListView >

.. Make gridview as ur listview's default view. and dothe rest using Gridviewcolumn data templates..

then bind ur data source..

Subindev
+3  A: 

Template selectors allow you at runtime to select between different data templates to use in items controls like list view.

XAML:

<Window x:Class="ListViewTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ListViewTest"
    Height="300" Width="300">

    <Window.Resources>
        <DataTemplate x:Key="textBoxTemplate">
            <TextBox Text="{Binding Path=Value}" Width="100"></TextBox>
        </DataTemplate>

        <DataTemplate x:Key="checkBoxTemplate">
            <CheckBox IsChecked="{Binding Path=Value}" IsThreeState="False"></CheckBox>
        </DataTemplate>

        <local:SettingsTemplateSelector 
            x:Key="settingsTemplateSelector" 
            TextBoxTemplate="{StaticResource textBoxTemplate}" 
            CheckBoxTemplate="{StaticResource checkBoxTemplate}" />

    </Window.Resources>

    <ListView ItemsSource="{Binding Path=Settings}">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn 
                        Header="Name" 
                        DisplayMemberBinding="{Binding Path=Name}" />                          
                    <GridViewColumn 
                        Header="Setting" 
                        CellTemplateSelector="{StaticResource settingsTemplateSelector}" />
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

</Window>

Code behind:

using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;

namespace ListViewTest
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            Settings = new List<Setting>();
            Settings.Add(new Setting("On/Off", true));
            Settings.Add(new Setting("Elevation", "100"));

            DataContext = this;
        }

        public List<Setting> Settings { get; private set; }
    }

    public class Setting
    {
        public Setting(string name, string value)
        {
            Name = name;
            Value = value;
            IsCheckBox = false;
        }

        public Setting(string name, bool value)
        {
            Name = name;
            Value = value;
            IsCheckBox = true;
        }

        public string Name { get; private set; }
        public object Value { get; set; }
        public bool IsCheckBox { get; private set; }
    }

    public class SettingsTemplateSelector : DataTemplateSelector
    {
        public DataTemplate CheckBoxTemplate { get; set;}
        public DataTemplate TextBoxTemplate { get; set;}

        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            Setting setting = item as Setting;
            if (setting.IsCheckBox)
            {
                return CheckBoxTemplate;
            }
            return TextBoxTemplate;
        }
    }
}
Wallstreet Programmer
This is a goood answer. My only change is that you should do a null check on the setting in the template selector, as the `as` call could return a null.
Alastair Pitts
Yes, I left error handling as an exercise. Tried to keep the code focused on just solving the problem.
Wallstreet Programmer