У меня есть поле со списком в datagrid, расположенном в действии. Основываясь на выборе combobox, я программно программирую другую сетку с элементами управления. Пользователь вводит некоторые данные в эти элементы управления, а затем сохраняет их. Объект, связанный с полем со списком, имеет множество свойств, из которых два используются в выбранном пути пути и пути отображения. Данные привязаны с использованием двусторонней привязки для поля со списком. Когда сохраненная активность, которая была помещена в рабочий процесс, снова открыта, данные перезагружаются правильно, а правильный объект - значение, установленное в поле со списком. Но при отображении пользовательского интерфейса только значения, которые связаны с полем со списком, остаются неповрежденными (то есть в выбранном пути значений и пути элемента отображения), остальные сбрасываются.Combo Box Two Way Binding сбрасывает свойства
Любая идея, почему это может произойти?
P.S: Установка привязки к OneTime
решает проблему извлечения, но любые изменения, внесенные в пользовательский интерфейс после загрузки, не отражаются обратно.
Code-Behind:
public ObservableCollection<MyRule> AllRules {get;set;}
public MyRule myRule{get;set;}
В DataGrid Loaded Событие Я заселить 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
}
Свойство входов и выходов получается из программно сгенерированного управления с помощью отражения и добавлено к объекту, населенной ComboBox и сохранено ,
Я изучил эту проблему here, но решение не решило мою проблему. Любая помощь будет большой.
Спасибо AnjumSKhan. Сообщите, если это сработало. Но даже в этом случае SelectedItem правильно выбирается именно так, что при рендеринге сохраняются только значения, связанные с полем со списком. –
По-прежнему та же проблема. Дело в том, что в событии, загруженном в сетку данных, объект имеет правильные значения, но когда событие выбора комбинированного блока изменилось, вызывается сброс значений ввода и вывода. –