C# 从数据绑定的可观察集合WPF在列表框中显示类的属性

C# 从数据绑定的可观察集合WPF在列表框中显示类的属性,c#,wpf,data-binding,observablecollection,C#,Wpf,Data Binding,Observablecollection,我当前正试图显示可观察集合(myClass)中的项目。类本身只有一些公共字符串属性。我知道集合正在从流源正确更新,但由于某些原因,它没有使用我希望的属性更新列表框。我的XAML很可能有一些错误: <Window x:Class="PoSClientWPF.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.m

我当前正试图显示
可观察集合(myClass)
中的项目。类本身只有一些公共字符串属性。我知道集合正在从流源正确更新,但由于某些原因,它没有使用我希望的属性更新列表框。我的XAML很可能有一些错误:

<Window x:Class="PoSClientWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Margin="10">
        <ListBox x:Name="pumpListBox" ItemsSource="{Binding PumpCollection}" Grid.IsSharedSizeScope="True">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="ID" />
                            <ColumnDefinition SharedSizeGroup="State" />
                        </Grid.ColumnDefinitions>
                        <TextBlock Margin="2" Text="{Binding pumpID}" Grid.Column="0"/>
                        <TextBlock Margin="2" Text="{Binding state}" Grid.Column="1"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>
为了将
项资源
绑定到它。我认为在XAML中声明绑定的方式有错误,但我不确定。我试图将属性
pumpID
state
从类实例添加到列表框中

泵类
pumpItem
如下所示:

public enum pumpState
{
    Available,
    customerWaiting,
    Pumping,
    customerPaying
};

public enum fuelSelection
{
    Petrol,
    Diesel,
    LPG,
    Hydrogen,
    None
};

public class PumpItem
{
    public string pumpID;

    public double fuelPumped;
    public double fuelCost;

    public fuelSelection selection;
    public pumpState state;

    public PumpItem(string _ID)
    {
        this.pumpID = _ID;
        this.fuelPumped = 0;
        this.fuelCost = 0;
        this.selection = fuelSelection.None;
        this.state = pumpState.Available;            
    }
}

非常感谢任何指针或帮助。

您不能绑定到字段。将这些更改为公共属性

public class PumpItem
{
    private string pumpID;
    public string PumpId
    {
        get
        {
             return pumpId;
        }
        set
        {
            pumpId = value;
        }
    }

    private double fuelPumped;
    public double FuelPumped
    {
        get
        {
             return fuelPumped;
        }
        set
        {
            fuelPumped = value;
        }
    }

    private double fuelCost;
    public double FuelCost
    {
        get
        {
             return fuelCost;
        }
        set
        {
            fuelCost= value;
        }
    }

    public fuelSelection selection;
    public fuelSelection Selection
    {
        get
        {
             return selection;
        }
        set
        {
            selection = value;
        }
    }

    public pumpState state;
    public pumpState State
    {
        get
        {
             return state;
        }
        set
        {
            state = value;
        }
    }

    public PumpItem(string _ID)
    {
        this.PumpID = _ID;
        this.FuelPumped = 0;
        this.FuelCost = 0;
        this.Selection = fuelSelection.None;
        this.State = pumpState.Available;
    }
}
XAML



检查输出控制台是否存在绑定错误

正确的货币和答案,只是一些事情,如变量名称资本化。例如,在您的示例中,它应该是私有字符串pumpId;以匹配变量名。还包括泵状态;应该是私人的。除此之外,我非常高兴地标记为已回答。谢谢
public class PumpItem
{
    private string pumpID;
    public string PumpId
    {
        get
        {
             return pumpId;
        }
        set
        {
            pumpId = value;
        }
    }

    private double fuelPumped;
    public double FuelPumped
    {
        get
        {
             return fuelPumped;
        }
        set
        {
            fuelPumped = value;
        }
    }

    private double fuelCost;
    public double FuelCost
    {
        get
        {
             return fuelCost;
        }
        set
        {
            fuelCost= value;
        }
    }

    public fuelSelection selection;
    public fuelSelection Selection
    {
        get
        {
             return selection;
        }
        set
        {
            selection = value;
        }
    }

    public pumpState state;
    public pumpState State
    {
        get
        {
             return state;
        }
        set
        {
            state = value;
        }
    }

    public PumpItem(string _ID)
    {
        this.PumpID = _ID;
        this.FuelPumped = 0;
        this.FuelCost = 0;
        this.Selection = fuelSelection.None;
        this.State = pumpState.Available;
    }
}
<TextBlock Margin="2" Text="{Binding PumpID}" Grid.Column="0"/>
<TextBlock Margin="2" Text="{Binding State}" Grid.Column="1"/>