【发布时间】:2016-04-18 16:34:57
【问题描述】:
我目前正在尝试显示来自ObservableCollection(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>
通过研究其他有关此错误的帖子。我已将this.DataContext = this; 添加到我的MainWindow 中,并拥有:
public ObservableCollection<PumpItem> PumpCollection
{
get { return pumpCollection; }
}
为了将ItemsSource绑定到它。我认为我在 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;
}
}
非常感谢任何指针或帮助。
【问题讨论】:
标签: c# wpf data-binding observablecollection