У меня есть ListView, который имеет связанные данные, и две дополнительные привязки, подобные этой:
<ListView x:Name="listViewProducts" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" ItemsSource="{Binding Products}" IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding Path=Product, Mode=OneWayToSource}" SelectedIndex="{Binding Path=SelectedProductIndex, Mode=OneWayToSource}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="100" DisplayMemberBinding="{Binding ID}" />
<GridViewColumn Header="Name" Width="170" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Price" Width="100" DisplayMemberBinding="{Binding Price}" />
<GridViewColumn Header="Reseller" Width="Auto" DisplayMemberBinding="{Binding Reseller}" />
</GridView>
</ListView.View>
</ListView>
Вот так у меня есть необходимое свойство Product во ViewModel. У меня также есть 4 текстовых поля, например, как следующее:
< TextBox Grid.Row="0" Grid.Column="1" x:Name="txtName" ...
Text="{Binding Text, Path=Product.Name, Mode=TwoWay}" />
И вот что я пытаюсь достичь:
Я хочу обновить список только тогда, когда пользователь нажимает кнопку, определенную как:
<Button Grid.Row="0" Grid.Column="2" x:Name="btnUpdate" ....
Content="Update product"
Command="{Binding Path=Update_Command}"
CommandParameter="{Binding ElementName=listViewProducts, Path=SelectedIndex}" />
И вот что происходит: всякий раз, когда я выбираю элемент в списке, текстовые поля получают правильные свойства. Когда я изменяю одно из текстовых полей и выбираю другое, модель немедленно обновляется. Как это возможно, если выбранный элемент связан с режимом «OneWaytoSource»?