如何使wpf组合框不更新项目源中的项目

本文关键字:新项目 项目 更新 何使 wpf 组合 | 更新日期: 2023-09-27 17:50:50

本质上,我想使用组合框作为选择要查看的项的方法,而不是更新当前正在查看的项。是否有可能使用绑定而不是代码来做到这一点?

下面是我在视图中的代码:
<ComboBox DisplayMemberPath="CustomerId" SelectedValuePath="CustomerId" 
SelectedValue="{Binding Path=CustomerId}" ItemsSource="{Binding Mode=OneWay}" 
IsSynchronizedWithCurrentItem="True"/>

它将显示我从组合框中选择的下一个成员,但它也将覆盖我之前切换的客户的值。

(另外,我为任何不礼貌的行为道歉;这是我在这里的第一篇文章)

编辑:为了澄清,窗口的层次结构如下:一个包含文本框和组合框的网格,并且具有绑定。文本框绑定到"customer"类的各种属性,然后组合框设置所选客户。

像这样:

<Grid DataContext = "{Binding Customers}">
    <TextBox .../>
    ...
    <ComboBox (see code above)/>
</Grid>

如何使wpf组合框不更新项目源中的项目

试试这个

<ComboBox DisplayMemberPath="CustomerId" SelectedValuePath="CustomerId" 
SelectedValue="{Binding Path=CustomerId, UpdateSourceTrigger=Explicit}" ItemsSource="{Binding   Mode=OneWay}" 
IsSynchronizedWithCurrentItem="False"/>

所以你必须显式地更新你的SelectedValue属性来更新代码。

要回答我自己的问题了,哦,好吧

为了解决这个问题,我在我的代码中使用了以下代码:
        <ComboBox 
            DisplayMemberPath="CustomerId" 
            SelectedValuePath="CustomerId"
            SelectedValue="{Binding Path=CustomerId, Mode=OneWay, UpdateSourceTrigger=Explicit}" 
            ItemsSource="{Binding Mode=OneWay}" 
            IsSynchronizedWithCurrentItem="True"/>

如果我没有将所选值中的绑定指定为单向绑定,那么它将更新源。我认为itemsource中的单向绑定应该为我做这件事,但显然情况并非如此。