我有一个关于comportment我的ComboBox的问题。 首先我使用组合框来显示IEnumarale中的所有元素。 然后,用一个按钮打开一个弹出窗口,用户可以添加一个表示符。 问题是,当用户验证他的选择并关闭弹出窗口时,该元素不会自动添加到组合框,而不会刷新页面。Popup和ComboBox绑定与Silverlight
组合框编码如下:
<telerik:RadComboBox x:Name="MyElements"
SelectionChanged="MyElements_OnSelectionChanged"
ItemTemplate="{StaticResource ComboBoxElementsTemplate}"
ItemsSource="{Binding ListElements}"/>
列表的构造函数是:
public IEnumerable<Element> ListElements
{
get { return _listElements; }
set
{
_listElements= value;
RaisePropertyChange("ListElements");
}
}
按钮可以验证用户选择在弹出的后面的代码:
private ObservableCollection<HistoriqueElement> elementList = null;
private void SelectClick(object sender, RoutedEventArgs e)
{
var element= _GridList.SelectedItem as HistoriquePasserelle;
if (_GridList.SelectedItem != null)
{
var installation = this.DataContext as Installation;
if (installation != null && element!= null)
{
element.DateFin = DateTime.Now;
HistoriqueElement newElement= new HistoriqueElement()
{
Installation = installation,
ContactAction = GlobalActeurs.Current.CurrentContact,
Date = DateTime.Now,
Element = element.Element,
StatutElement = element.StatutElement ,
Owner= element.Owner,
};
elementList.Remove(element);
}
MainPage.ClosePopup();
}
}
当用户在弹出窗口中的列表显示中选择一个新元素并验证其ch oice,他返回到主页面,但他的选择不会自动添加到组合框中。
我可以发布你的代码的任何部分。 预先感谢您。
的方法OnDataContextChanged:
public override void OnDataContextChanged(DependencyPropertyChangedEventArgs e)
{
if (e.NewValue is Installation)
{
if (MainPage.CurrentInstallation.LastElements != null)
{
ListElements = MainPage.CurrentInstallation.LastElements;
MyElements.SelectedIndex = 0;
}
else
{
LoadOperation<Element> operation =
_context.Load(_context.GetCurrentElementsByInstallationId(MainPage.CurrentInstallation.Id));
this._busy.IsBusy = true;
operation.Completed += delegate
{
this._busy.IsBusy = false;
if (operation.ManageError())
{
ListElements = operation.Entities;
}
};
}
this.DataContext = this;
}
else
{
RaisePageTitleChanged();
if (MainPage.CurrentInstallation == null)
return;
}
if (MyElements.SelectedItem == null && MyElements.Items.Any())
{
MyElements.SelectedIndex = 0;
}
}
但我已经绑定了我的组合框与xaml中的itemsSource。我需要在后面的代码中再次执行此操作吗?在构造函数中? – Vinc3nt 2013-04-08 08:00:18
是的。您需要添加 – Sajeetharan 2013-04-08 08:20:59
如果ListElements是ObservableCollection,则不需要。另外,上面的代码会破坏绑定。 – 2013-04-08 10:11:00