オブジェクトのリストを複数のデータを含むグリッドとしてロードしようとしています。ここでわかるように、ListBox を選択しました。
<ListBox ItemsSource="{Binding People, Mode=TwoWay}" SelectedItem="{Binding Person, Mode=TwoWay}" >
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition Width="30"></ColumnDefinition>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition Width="20"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" Text="{Binding name}" Grid.Column="0" TextAlignment="Right"></TextBlock>
<TextBox Grid.Column="1" Margin="5,0,0,0" Height="Auto" VerticalAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding age}"></TextBox>
<TextBlock Grid.Column="2" Text="yo" VerticalAlignment="Center" Margin="5,0,0,0"></TextBlock>
<TextBox Grid.Column="3" Margin="5,0,0,0" Height="Auto" VerticalAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding baremo}"></TextBox>
<TextBlock Grid.Column="4" Text="€" VerticalAlignment="Center" Margin="5,0,0,0"></TextBlock>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
データを People ObservableCollection にロードすると、すべてがうまくいき、完全に表示されます。
Person を初めて選択すると、それが機能し、VM にプロパティ値が設定されます。
問題は、別の「人物」を2 回目に選択したときに発生します。プロパティは変更されません...別のものを選択するたびに、少し時間がかかります(10 - 20の後ははるかに長くなります)。
これが私のViewModelコードです:
#region People
public const string PeoplePropertyName = "People";
private ObservableCollection<Player> _People;
public ObservableCollection<Player> People
{
get
{
return _People;
}
set
{
_People = value;
RaisePropertyChanged(People);
}
}
#endregion
#region Person
public const string PersonPropertyName = "Person";
private Player _Person;
public Player Person
{
get
{
return _Person;
}
set
{
_Person = value;
RaisePropertyChanged(PersonPropertyName);
}
}
#endregion
そして、次のように People リストをロードしています。
void LoadPeople(GetPlayersEventArgs e)
{
if (this.People == null) this.People = new ObservableCollection<Player>();
foreach (Player Person in e.Result)
{
Player newPerson = new Player();
...
this.People.Add(newPerson);
}
this.SetUnBusy();
}
私は何かが欠けていますか?? 前もって感謝します。
別の値を選択しようとするたびに私が見た @Ryan の質問の後、私は多くのことを得る:
ソリューションで「System.InvalidCastException」タイプの初回例外が発生しました