when I build a list of RadComboBoxItem and assign them to the RadComboBox...
1) it doesn't show the expected default selected item
2) when i select an item from the list, the box doesn't show the selected item
if I change this list of RadComboBoxItem to list of data object, it worked.
I tried the above codes, none worked. the above codes worked when the itemsources is list of data objects.
below are the full codes:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
BuildData();
this.DataContext = MyDataInst;
Build1();
Build2();
cb2.SelectionChanged += new Telerik.Windows.Controls.SelectionChangedEventHandler(cb2_SelectionChanged);
}
void cb2_SelectionChanged(object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e)
{
}
List<MyData> MyDataList = new List<MyData>();
MyData MyDataInst = new MyData
{
Value = "1",
Text = "1",
};
void BuildData()
{
MyDataList.Add(new MyData { Value = null, Text = "null", });
MyDataList.Add(MyDataInst);
MyDataList.Add(new MyData { Value = "2", Text = "2", });
}
void Build1()
{
//cb1.SelectedValue
//SetBinding(cb1, new System.Windows.Data.Binding("Value"));
cb1.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, new System.Windows.Data.Binding("Value"));
cb1.DisplayMemberPath = "Text";
cb1.SelectedValuePath = "Value";
this.cb1.ItemsSource = MyDataList;
}
void Build2()
{
cb2.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValueProperty, new System.Windows.Data.Binding("Value"));
//cb2.DisplayMemberPath = "DataContext.Text";
//cb2.SelectedValuePath = "DataContext.Value";
cb2.DisplayMemberPath = "Text";
cb2.SelectedValuePath = "Value";
//Binding b = new Binding("Value");
//b.ElementName = "DataContext";
////b.Path.Path = "Value";
//cb2.SetBinding(Telerik.Windows.Controls.RadComboBox.SelectedValuePathProperty, b);
List<Telerik.Windows.Controls.RadComboBoxItem> dl = new List<Telerik.Windows.Controls.RadComboBoxItem>();
foreach (var d in MyDataList)
{
Telerik.Windows.Controls.RadComboBoxItem cbi = new Telerik.Windows.Controls.RadComboBoxItem();
cbi.DataContext = d;
cbi.SetBinding(Telerik.Windows.Controls.RadComboBoxItem.ContentProperty, new Binding("Text"));
dl.Add(cbi);
}
this.cb2.ItemsSource = dl;
}
}
public class MyData
{
public string Value { get; set; }
public string Text { get; set; }
}