代码之家  ›  专栏  ›  技术社区  ›  OrPaz

WPF组合框SelectedItem问题

  •  0
  • OrPaz  · 技术社区  · 15 年前

    我无法从WPF组合框实现非常简单的功能。

    我的组合框需要列出一组值。这个很好用。值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部分的某个地方,但我就是不知道在哪里,为什么。

    谢谢,

    2 回复  |  直到 15 年前
        1
  •  1
  •   Tri Q Tran    15 年前

    尝试改变

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

    收件人:

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

        2
  •  0
  •   Community Mohan Dere    9 年前

    我正在发布原始问题的答案。这是为了: 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. ,附加克隆对象,将其状态更改为 EntityState.Modified

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

    希望对你有帮助。。。

    推荐文章