2010-10-04 90 views
0

我无法通过WPF组合框实现非常简单的功能。WPF Combobox SelectedItem问题

我的组合框需要列出一组值。这工作正常。值id也被成功保存在数据库中。问题是,当我想在编辑模式下打开窗口时,组合保持空白。这里是代码:

  <ComboBox Height="28" 
        HorizontalContentAlignment="Center" 
        Name="cmbActivity" 
        ItemsSource="{Binding Path=Unit.UnitActivities}" 
        SelectedValuePath="Id" 
        SelectedValue="{Binding Path=UnitActivityId}" 
        Style="{StaticResource comboBoxInError}" 
        Width="200" 
        Margin="6" 
        HorizontalAlignment="Left"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate> 
        <TextBlock FlowDirection="LeftToRight" Text="{Binding Path=ActivityTime.Name}" /> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
      <ComboBox.SelectedItem> 
       <Binding ElementName="cmbActivity" Path="UnitActivityId" UpdateSourceTrigger="PropertyChanged"> 
        <Binding.ValidationRules> 
         <ExceptionValidationRule /> 
         <val:NotEmptyValidationRule /> 
         <val:UnitResTimeOverlapValidationRule /> 
        </Binding.ValidationRules> 
       </Binding> 
      </ComboBox.SelectedItem> 
     </ComboBox> 

我明白我的问题是在SelectedItem部分的某处,但我只是无法确定在哪里和为什么。

请帮助..

感谢,

回答

0

我发布了原始问题的答案。这是idenctical到:WPF Cloned/Detached object edit problem - what is the standard?

  1. 首先实现你可复制的对象容器:

    public class ClonableObjectContainer : Object , ICloneable 
    { 
        private Object data; 
    
        public ClonableObjectContainer(Object obj) 
        { 
         data = obj; 
        } 
    
        public Object Data 
        { 
         get { return data; } 
        } 
    
        public object Clone() 
        { 
         return (ClonableObjectContainer)this.MemberwiseClone(); 
        } 
    } 
    
  2. 然后使用这个对象及其克隆方法来建立分离编辑对象:

      ClonableObjectContainer coc = new ClonableObjectContainer(actor); 
         EntityObject editEntity = (EntityObject)coc.Data; 
    
  3. 执行更改后,从ObjectContext中分离出原始对象 ,附加克隆的对象T,其状态更改为EntityState.Modified优雅地保存:

     ContextManager.CurrentObjectContext.Detach(oldItem); 
         ContextManager.CurrentObjectContext.Attach((IEntityWithKey)item); 
         ContextManager.CurrentObjectContext.ObjectStateManager.ChangeObjectState(item, EntityState.Modified); 
         ContextManager.Save(); 
    

希望它可以帮助... 奥兰

1

尝试改变

<Binding ElementName="cmbActivity" Path="UnitActivityId" UpdateSourceTrigger="PropertyChanged"> 

到:

<Binding Path="UnitActivityId" UpdateSourceTrigger="PropertyChanged"> 

通过删除的ElementName。将绑定源设置为自身是没有意义的,因为数据上下文会默认推断这一点。

+0

谢谢!虽然你是对的,但问题来源却完全不同,并且因为我使用克隆对象进行编辑。我会发布关于它的另一个问题。为你+1! – OrPaz 2010-10-05 16:21:15