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.
//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);
I tried the above codes, none worked. the above codes worked when the itemsources is list of data objects.
below are the full codes:
<
StackPanel
Orientation
=
"Vertical"
>
<
telerik:RadComboBox
Name
=
"cb1"
Width
=
"200"
/>
<
telerik:RadComboBox
Name
=
"cb2"
Width
=
"200"
Margin
=
"5,20,5,5"
/>
</
StackPanel
>
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
; }
}