Спрашивающий
Две коллекции в один DataGrid в одну ячейку

Общие обсуждения
-
Всем доброго времени суток, помогите пожалуйста решить проблему следующего рода. У меня есть одна коллекция которая принимает структуру прочитанную с файла и далее выводит её в datagrid. Но появилась необходимость произвести мат. расчет и выходные данные также отобразить в таблице. для этого я создал еще одну коллекцию с одной переменной массива, обернул все в коллекцию, но как теперь отобразить мне эти данные в той таблице где коллекция уже объявлена ?
public class test { public float[] result { get; set; } }; [StructLayout(LayoutKind.Sequential)] public class str_pereval //Класс данных валков { public int nk { get; set; } //Номер клети public int N_lower { get; set; } //Номер нижнего валка public int N_top { get; set; } //Номер верхнего валка public float d_lower { get; set; } //Диаметр нижнего валка public float d_top { get; set; } //Диаметр верхнего валка public DateTime t_n { get; set; } //Дата\Время перевалки public DateTime t_k { get; set; } public float L { get; set; } //Длина public float P { get; set; } //Вес в тоннах public float Pm { get; set; } //Вес в тоннах при прокате меньше 0.7мм public float Pp { get; set; } //Вес в тоннах при прокате больше либо равно 0.7 мм public float kal_n { get; set; } public float kal_v { get; set; } public float res_v { get; set; } //Ресурс валков [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] private float[] frez; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] private int[] irez; public float[] Frez { get { return frez; } } public int[] Irez {get { return irez; }} }; public partial class MainWindow : Window { public ObservableCollection<str_pereval> List { get; private set; } = new ObservableCollection<str_pereval>(); public ObservableCollection<str_pereval> List1 { get; private set; } = new ObservableCollection<str_pereval>(); public ObservableCollection<test> tests { get; private set; } = new ObservableCollection<test>(); public MainWindow() { InitializeComponent(); DataContext = List; DataContext = List1; DataContext = tests; } private void CommandBinding_Open_Executed(object sender, ExecutedRoutedEventArgs e) { float[] res_val_m = new float[] { 2700, 2100, 1300, 1000, 30000, 30000, 30000, 20000}; float[] res_val_p = new float[] { 3500, 3000, 2200, 2000, 40000, 40000, 40000, 30000}; List.Clear(); List1.Clear(); int counter = 0; using (var reader = new BinaryReader(File.OpenRead("fpereval.dat"))) { while (reader.BaseStream.Position != reader.BaseStream.Length) { var obj = ReadStruct<str_pereval>(reader); if (counter < 4) List.Add(obj); else List1.Add(obj); counter++; } } for (int i = 0; i < 4; i++) { float[] objj = new float[8]; objj[i] = 1 - (List[i].Pm / res_val_m[i]) - (List[i].Pp / res_val_p[i]); tests.Add(new test {result=objj}); } }
Вот если выводить мою коллекцию отдельно все работает.
<DataGrid x:Name="dataGrid1" ItemsSource="{Binding tests}" DataContext ="{x:Reference mainWindow}" AutoGenerateColumns="False" HorizontalAlignment="Left" VerticalAlignment="Top" Height="304" Width="548"> <DataGrid.Columns> <DataGridTextColumn Header="Test" Binding="{Binding result[3]}" /> </DataGrid.Columns> </DataGrid>
А мне нужно так:
<DataGrid x:Name="Testik" ItemsSource="{Binding List}" DataContext ="{x:Reference mainWindow}" AutoGenerateColumns="False" IsReadOnly="False" SelectionMode="Single" CanUserDeleteRows="False" CanUserAddRows="False" CanUserResizeRows="False" RowDetailsVisibilityMode="Visible" Margin="-10,42,10,-135" FontWeight="Bold" FontSize="13.333" RenderTransformOrigin="0.5,0.5" BeginningEdit="Testik_BeginningEdit" Height="701" VerticalAlignment="Top" Grid.ColumnSpan="2" > <DataGrid.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform AngleX="-0.735"/> <RotateTransform Angle="-0.248"/> <TranslateTransform X="-1.487"/> </TransformGroup> </DataGrid.RenderTransform> <DataGrid.Columns> <DataGridTextColumn Header="Вес(т)\Длина"> <DataGridTextColumn.Binding> <MultiBinding Converter="{local:Myconverter}"> <Binding Path="P"/> <Binding Path ="result[3]"/> </MultiBinding> </DataGridTextColumn.Binding> </DataGridTextColumn> </DataGrid.Columns> </DataGrid>
Понятно что result[3] работать не будет, так как нет обращения к ItemsSource="{Binding tests}".
Как же все таки обьеденить List и tests помогите пожалуйста.Может есть другой путь решения ? Большое спасибо
- Изменен тип Maksim MarinovMicrosoft contingent staff, Moderator 8 декабря 2015 г. 8:31 тема неактивна
1 декабря 2015 г. 11:02