简而言之,我将组合框的ItemSource绑定到对象列表。我将SelectedItem绑定到一个属性。问题是:每当我在组合框中选择一个项目并按一个按钮时,SelectedItem就会重复自身(甚至将其添加到数据库中)。这不是我想要的。
我试图更改绑定模式和updateSourceTrigger,但是到目前为止,这对我来说还没有解决。我还尝试将我的itemssource绑定到另一个列表(数据库存储库中的一个副本),但是问题仍然存在。
XAML(视图):
<ComboBox Margin="0,15,0,0" DockPanel.Dock="Top" materialDesign:HintAssist.Hint="Table" VerticalAlignment="Top" SelectedItem="{Binding Reservation.Table}" ItemsSource="{Binding Tables}" DisplayMemberPath="Name" ></ComboBox>
ViewModel:
public ObservableCollection<Data.Table> Tables
{
get { return _tables; }
set
{
SetValue(ref _tables, value);
}
}
Tables = _tableRepo.GetTables();
按钮逻辑:
private void Save()
{
if (IsNewReservation)
{
_reservationRepo.AddReservation(Reservation);
}
else
{
_reservationRepo.UpdateReservation(Reservation);
}
}
按钮XAML:
<Button Grid.Column="2" Grid.Row="2" FontSize="20" Height="45" Command="{Binding SaveCommand}" Content="Save">
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource HasAllTextConverter}">
<!--https://www.codeproject.com/Questions/1101746/Need-to-enable-the-button-when-all-textbox-has-val-->
<Binding ElementName="LastName" Path="Text"/>
<Binding ElementName="AmountPeople" Path="Text"/>
<Binding ElementName="Phone" Path="Text"/>
</MultiBinding>
</Button.IsEnabled>
</Button>
我希望SelectedItem可以更新我的属性,而不会影响源。