WPF组合框SelectedItem问题
我无法从WPF组合框实现非常简单的功能 我的组合框需要列出一组值。这个很好用。值id也成功保存在数据库中。问题是,当我想在编辑模式下打开窗口时,组合框保持为空。代码如下:WPF组合框SelectedItem问题,wpf,wpf-controls,binding,prism,Wpf,Wpf Controls,Binding,Prism,我无法从WPF组合框实现非常简单的功能 我的组合框需要列出一组值。这个很好用。值id也成功保存在数据库中。问题是,当我想在编辑模式下打开窗口时,组合框保持为空。代码如下: <ComboBox Height="28" HorizontalContentAlignment="Center" Name="cmbActivity" ItemsSource="{Bi
<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部分的某个地方,但我就是不知道在哪里,为什么
请帮忙
谢谢,试试换衣服
<Binding ElementName="cmbActivity" Path="UnitActivityId" UpdateSourceTrigger="PropertyChanged">
致:
通过删除ElementName。将绑定源设置为自身是没有意义的,因为默认情况下数据上下文将推断出这一点。我正在发布原始问题的答案。这是一个理想的方法:
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();
}
}
ClonableObjectContainer coc = new ClonableObjectContainer(actor);
EntityObject editEntity = (EntityObject)coc.Data;
EntityState。已修改并正常保存:
ContextManager.CurrentObjectContext.Detach(oldItem);
ContextManager.CurrentObjectContext.Attach((IEntityWithKey)item);
ContextManager.CurrentObjectContext.ObjectStateManager.ChangeObjectState(item, EntityState.Modified);
ContextManager.Save();
奥兰谢谢!虽然您是对的,但问题的来源完全不同,因为我使用克隆对象进行编辑。我将发布另一个关于它的问题+1给你!!
ContextManager.CurrentObjectContext.Detach(oldItem);
ContextManager.CurrentObjectContext.Attach((IEntityWithKey)item);
ContextManager.CurrentObjectContext.ObjectStateManager.ChangeObjectState(item, EntityState.Modified);
ContextManager.Save();