WPF data templates

Posted by imekon on Stack Overflow See other posts from Stack Overflow or by imekon
Published on 2010-04-24T07:32:33Z Indexed on 2010/04/24 7:43 UTC
Read the original article Hit count: 223

Filed under:
|
|

I'm getting started with WPF and trying to get my head around connecting data to the UI. I've managed to connect to a class without any issues, but what I really want to do is connect to a property of the main window.

Here's the XAML:

<Window x:Class="test3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:test3"
    Title="MainWindow" Height="350" Width="525">
<Window.Resources>
    <CollectionViewSource
        Source="{Binding Source={x:Static Application.Current}, Path=Platforms}"
        x:Key="platforms"/>
    <DataTemplate DataType="{x:Type custom:Platform}">
        <StackPanel>
            <CheckBox IsChecked="{Binding Path=Selected}"/>
            <TextBlock Text="{Binding Path=Name}"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>
<Grid>
    <ListBox ItemsSource="{Binding Source={StaticResource platforms}}"/>
</Grid>

Here's the code for the main window:

public partial class MainWindow : Window
{
    ObservableCollection<Platform> m_platforms;

    public MainWindow()
    {
        m_platforms = new ObservableCollection<Platform>();

        m_platforms.Add(new Platform("PC"));

        InitializeComponent();
    }

    public ObservableCollection<Platform> Platforms
    {
        get { return m_platforms; }
        set { m_platforms = value; }
    }
}

Here's the Platform class:

public class Platform
{
    private string m_name;
    private bool m_selected;

    public Platform(string name)
    {
        m_name = name;
        m_selected = false;
    }

    public string Name
    {
        get { return m_name; }
        set { m_name = value; }
    }

    public bool Selected
    {
        get { return m_selected; }
        set { m_selected = value; }
    }
}

This all compiles and runs fine but the list box displays with nothing in it. If I put a breakpoint on the get method of Platforms, it doesn't get called. I don't understand as Platforms is what the XAML should be connecting to!

© Stack Overflow or respective owner

Related posts about c#

Related posts about wpf