0
私はCrewプロパティを持っています。プロパティにはいくつかのフィールドがあり、そのほとんどはCodeとInvoiceAmountです。プラスボタンは、新しい乗組員をObservableCollection of crewsに挿入することになっています。最初の項目を追加すると問題はありませんが、2番目の項目が挿入されると、最初の項目のコードは2番目の項目に変更され、2番目の項目は表示されないコードになります。 +ボタンをクリックするたびに新しいクルーが挿入されるように修正するにはどうすればよいですか? UI開始XAMLバウンドプロパティが期待どおりに機能していません
:
を一つの項目(A)を添加した後:
2番目の項目(b)が追加されました:
をpublic class MainPageViewModel : ViewModelBase
{
public MainPageViewModel()
{
AddCrewCommand = new CustomCommand(param => addCrew(), null);
Crews.CollectionChanged += new NotifyCollectionChangedEventHandler(Crews_Updated);
}
private void Crews_Updated(object sender, NotifyCollectionChangedEventArgs e)
{
RaisePropertyChanged("lvCrewList");
}
public Crew Crew { get; set; } = new Crew();
public ObservableCollection<Crew> Crews { get; private set; } = new ObservableCollection<Crew>();
public Crew SelectedCrew { get; set; }
public ICommand AddCrewCommand { get; private set; }
private void addCrew()
{
Crews.Add(Crew);
Crew = new Crew();
}
public ObservableCollection<string> SelectedWorkOrder { get; set; }
}
ViewModelBase:
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
ここCodeフィールドを割り当てXAMLビットがあります:
<StackPanel Orientation="Horizontal" VerticalAlignment="Top" >
<Label Content="Crew" Width="55" Height="25" Margin="10,10,0,0"/>
<TextBox x:Name="txtCrew" Width="75" Height="25" Margin="0,10,10,0"
Text="{Binding Crew.Code, Mode=TwoWay}" />
<Button Content="+" Width="25" Height="25" Margin="0, 10, 0, 0" Command="{Binding AddCrewCommand}" />
</StackPanel>
クルークラス:
public class Crew
{
public string Code { get; set; }
public decimal InvoiceAmount { get; set; } = 0;
public Job Job { get; set; }
public override string ToString() => Code;
}
は、我々はグリッドのバインディングを参照することはできますか? –