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

时间:2014-03-19 07:01:16

标签: c# wpf combobox itemssource

基本上,我想使用组合框作为选择要查看的项目的方法,而不是更新当前正在查看的项目。是否可以使用绑定而不是代码来执行此操作?

这是我在视图中的代码:

<ComboBox DisplayMemberPath="CustomerId" SelectedValuePath="CustomerId" 
SelectedValue="{Binding Path=CustomerId}" ItemsSource="{Binding Mode=OneWay}" 
IsSynchronizedWithCurrentItem="True"/>

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

(另外,我对任何可怜的礼仪表示道歉;这是我在这里发表的第一篇文章)

编辑:为了澄清,窗口的层次结构如下:包含文本框和组合框并具有绑定的网格。文本框绑定到&#34;客户&#34;的各种属性。 class,然后组合框设置选定的客户。

所以这样:

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

2 个答案:

答案 0 :(得分:0)

试试这个

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

因此,您必须显式更新SelectedValue属性以在代码中进行更新。

答案 1 :(得分:0)

在这个问题上回答我自己的问题哦,好吧。

要解决此问题,我将此用于我的代码:

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

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