1
現在、ObservableCollection(myClass)
のアイテムを表示しようとしています。クラス自体にはいくつかのパブリック文字列プロパティがあります。私はコレクションがストリームソースから正しく更新されていることを知っていますが、何らかの理由でリストボックスを必要なプロパティで更新していません。 XAMLにエラーがある可能性が非常に高いです:データバインドからのリストボックスのクラスのプロパティの表示ObservableコレクションWPF
<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>
この非常にエラーに関する他の投稿をリサーチしています。それにItemsSource
をバインドするために
public ObservableCollection<PumpItem> PumpCollection
{
get { return pumpCollection; }
}
を:私は私のMainWindow
と同様に有することにthis.DataContext = this;
を追加含めました。 XAMLでバインディングを宣言する方法にエラーがあるとは思いますが、わかりません。私はプロパティpumpID
とstate
をクラスインスタンスからリストボックスに追加しようとしています。任意のポインタ
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;
}
}
をや感謝を助ける:
クラスpumpItem
は以下のとおりです。
右を結合するための変数名の大文字のようなだけでいくつかのことを出力コンソールをチェックしてください。例えば。あなたの例では、private string pumpIdでなければなりません。あなたの変数名を一致させるために。また、pumpState状態。おそらく私的でなければならない。それとは別に、答えとしてマークするのが嬉しいです。ありがとう – James