如何使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>
试试这个
<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中的单向绑定应该为我做这件事,但显然情况并非如此。