基本上,我想使用组合框作为选择要查看的项目的方法,而不是更新当前正在查看的项目。是否可以使用绑定而不是代码来执行此操作?
这是我在视图中的代码:
<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>
答案 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中的单向绑定应该为我做,但显然情况并非如此。