选择项目时如何阻止组合框将selectedItem添加到itemSource列表?

时间:2019-04-15 17:16:10

标签: c# wpf xaml mvvm data-binding

简而言之,我将组合框的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可以更新我的属性,而不会影响源。

0 个答案:

没有答案