or
Datas datas = new Datas();
ConfigTabCameras ctc = new ConfigTabCameras(datas);this.DataContext = datas;<custom:TabCameras /><telerik:RadGridView ItemsSource="{Binding DatasTabCameras}"/>private ObservableCollection<ViewTabCameras> datasTabCameras;public ObservableCollection<ViewTabCameras> DatasTabCameras{ get { if (this.datasTabCameras == null) { this.datasTabCameras = new ObservableCollection<ViewTabCameras>(); } return this.datasTabCameras; } set { this.EventPropertyChanged("DatasTabCameras"); } }public Datas(){}public class ConfigTabCameras : AbstractSql { public ConfigTabCameras(Datas datas) { this.configurationDatas = datas; ConfigurationTabCameras(); } private void TabCamerasConfiguration() { connect.dbConnect(); command.CommandText = "SELECT f1, f2, f3 " + "FROM t1ORDER BY f1"; command.CommandType = CommandType.Text; command.Connection = connect.getSqlConnection(); dataReader = command.ExecuteReader(); while (dataReader.Read()) { ViewTabCameras vtc = new ViewTabCameras(); vtc.Field1 = dataReader["f1"].ToString(); vtc.Field2 = int.Parse(dataReader["f2"].ToString()); vtc.Field3 = int.Parse(dataReader["f3"].ToString()); donneesConfiguration.DatasTabCameras.Add(vtc); } command.Dispose(); dataAdapter.Dispose(); connect.dbDisconnect(); } }private string field1;private int field2;private int field3;public string Field1{ get { return this.field1; } set { this.field1= value; this.EventPropertyChanged("Field1"); }}// Same for Field2 and 3...private Donnees donnees;public TabCameras(){ datas = new Datas(); //this.DataContext = datas; InitializeComponent();}<telerik:RadGridView ItemsSource="{Binding DatasTabCameras}"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn DataMemberBinding="{Binding Field1}" Header="Field 1" UniqueName="Field1" /> <telerik:GridViewComboBoxColumn Header="Field 2" ItemsSource="{Binding Field2}" UniqueName="Field2" DataMemberBinding="{Binding Field2}" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Field3}" Header="Field 3" UniqueName="Field3" /> </telerik:RadGridView.Columns></telerik:RadGridView><Window x:Class="CrmActivityTimer.SetRegardingEntities" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Title="SetRegardingEntities" Height="337" Width="439" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <Window.Resources> <Style x:Key="DraggableListBoxItem" TargetType="telerik:RadListBoxItem"> <Setter Property="telerik:DragDropManager.AllowDrag" Value="True"/> </Style> </Window.Resources> <Grid> <telerik:RadListBox ItemsSource="{Binding MetaData.RetrievedEntityMetaDatas}" HorizontalAlignment="Left" Height="190" Margin="10,57,0,0" VerticalAlignment="Top" Width="182" ItemContainerStyle="{StaticResource DraggableListBoxItem}" DisplayMemberPath="DisplayName.UserLocalizedLabel.Label" AllowDrop="True"> <telerik:RadListBox.DragVisualProvider> <telerik:ListBoxDragVisualProvider /> </telerik:RadListBox.DragVisualProvider> <telerik:RadListBox.DragDropBehavior> <telerik:ListBoxDragDropBehavior /> </telerik:RadListBox.DragDropBehavior> </telerik:RadListBox> <telerik:RadListBox HorizontalAlignment="Left" Height="190" Margin="239,57,0,0" VerticalAlignment="Top" Width="182" ItemsSource="{Binding MetaData.SavedEntityMetaDatas}" ItemContainerStyle="{StaticResource DraggableListBoxItem}" DisplayMemberPath="DisplayName.UserLocalizedLabel.Label" AllowDrop="True"> <telerik:RadListBox.DragVisualProvider> <telerik:ListBoxDragVisualProvider /> </telerik:RadListBox.DragVisualProvider> <telerik:RadListBox.DragDropBehavior> <telerik:ListBoxDragDropBehavior /> </telerik:RadListBox.DragDropBehavior> </telerik:RadListBox> </Grid></Window>public partial class SetRegardingEntities { public SetRegardingEntitiesMetaData MetaData { get; set; } public SetRegardingEntities() { MetaData = new SetRegardingEntitiesMetaData(); InitializeComponent(); IEnumerable<string> regardingTargets = CrmConnector.GetServiceAppointmentRegardingTargets(); List<EntityMetadata> regardingmetadataList = new List<EntityMetadata>(); foreach (string regardingTarget in regardingTargets) { regardingmetadataList.Add(CrmConnector.GetMetaDataForEntityName(regardingTarget)); } MetaData.RetrievedEntityMetaDatas = regardingmetadataList.OrderBy(metadata => metadata.DisplayName.UserLocalizedLabel.Label).ToList(); } private void btnSaveBetreft_onclick(object sender, RoutedEventArgs e) { List<string> regardingTargetsList = MetaData.SavedEntityMetaDatas.Select(savedEntityMetaData => savedEntityMetaData.LogicalName).ToList(); SettingsSaver.SaveRegardingList(regardingTargetsList); ActivityTimerContainer activityTimerContainer = new ActivityTimerContainer(); activityTimerContainer.Show(); Close(); } } public class SetRegardingEntitiesMetaData : INotifyPropertyChanged { private List<EntityMetadata> _retrievedEntityMetadatas; private List<EntityMetadata> _savedEntityMetadatas; public List<EntityMetadata> RetrievedEntityMetaDatas { get { return _retrievedEntityMetadatas; } set { if (_retrievedEntityMetadatas == value) { return; } _retrievedEntityMetadatas = value; OnPropertyChanged(); } } public List<EntityMetadata> SavedEntityMetaDatas { get { return _savedEntityMetadatas; } set { if (_savedEntityMetadatas == value) { return; } _savedEntityMetadatas = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(propertyName)); } } }