我在活动中的数据网格中有一个组合框。基于组合框选择,我以编程方式使用控件填充另一个网格。用户在这些控件中输入一些数据,然后保存。组合框绑定的对象有很多属性,其中两个用于选择值路径和显示成员路径。使用组合框的两种方式绑定数据来绑定数据。当重新打开已放置在工作流上的已保存活动时,数据将正确重新加载,并且在组合框中设置了正确的对象值。但在 UI 呈现时,只有与组合框附加的值保持不变(即,在选定值路径和显示成员路径中的值),其余的被重置。
知道为什么会发生这种情况吗?
PS:设置绑定OneTime
解决了检索的问题,但是加载后在UI上所做的任何更改都不会反映回来。
代码隐藏:
public ObservableCollection<MyRule> AllRules {get;set;}
public MyRule myRule{get;set;}
在 datagrid Loaded Event 中,我将 AllRules 填充为:
AllBusinessRules.Add(new MyRule () { RuleId = item.Id, RuleName = item.Name});
其中item.Id
和item.Name
通过服务调用从数据库中获取。
同样,如果我还将任何以前保存的规则加载为:
myRule=SelectedRule;
哪里SelectedRule
也有RuleId, RuleName, Inputs and Outputs
。
代码:
<ComboBox
ItemsSource="{Binding Path=AllRules}"
SelectedItem="{Binding Path=myRule,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
SelectedValuePath="RuleId"
DisplayMemberPath="RuleName">
<DataTemplate>
<TextBox Text="{Binding Path=myRule.RuleName}"/>
</DataTemplate>
</ComboBox>
班级:
public class MyRule{
public int RuleId{get;set;}
public string RuleName{get;set;}
public List<string> Inputs{get;set;} //properties that are reset when the UI renders
public List<string> Outputs{get;set;} //properties that are reset when the UI renders
}
Inputs 和 Outputs 属性通过反射从程序生成的控件中获得,并添加到由组合框填充的对象中并保存。
我在这里研究过这个问题,但解决方案并没有解决我的问题。任何帮助都会很棒。