Advertisement
Guest User

Untitled

a guest
May 12th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. .cs:
  2.  
  3. public partial class MainWindow : Window
  4. {
  5. public MainWindow()
  6. {
  7. InitializeComponent();
  8. }
  9. }
  10.  
  11. class StringHolder
  12. {
  13. public string[][] data;
  14. public int i, j;
  15. public string Value
  16. {
  17. get => data[i][j];
  18. set => data[i][j] = value;
  19. }
  20. }
  21.  
  22. class MainVM
  23. {
  24. string[][] data;
  25. public IEnumerable<IEnumerable<StringHolder>> Data =>
  26. Enumerable.Range(0, data.Length)
  27. .Select(i => Enumerable.Range(0, data[i].Length)
  28. .Select(j => new StringHolder()
  29. { data = data, i = i, j = j }));
  30. public MainVM(string[][] data) { this.data = data; }
  31. }
  32.  
  33. public partial class App : Application
  34. {
  35. protected override void OnStartup(StartupEventArgs e)
  36. {
  37. base.OnStartup(e);
  38.  
  39. // давайте чем-то заполним наш массив
  40. var data = new string[5][];
  41. var words =
  42. ("Если я что-нибудь в чём-нибудь понимаю, то дыра — это нора, " +
  43. "а нора — это Кролик, а Кролик — это подходящая компания, " +
  44. "а подходящая компания — это такая компания, где меня чем-нибудь " +
  45. "угостят и с удовольствием послушают мою Ворчалку.")
  46. .Split()
  47. .Where(w => w.Any(char.IsLetter))
  48. .Select(w => w.Trim('.', ','))
  49. .ToList();
  50. var ysize = words.Count / data.Length;
  51. int widx = 0;
  52. for (int i = 0; i < data.Length; i++)
  53. {
  54. data[i] = new string[ysize];
  55. for (int j = 0; j < ysize; j++)
  56. data[i][j] = words[widx++];
  57. }
  58.  
  59. MainVM vm = new MainVM(data);
  60. new MainWindow() { DataContext = vm }.Show();
  61. }
  62. }
  63.  
  64. App.xaml:
  65.  
  66. <Application x:Class="Test.App"
  67. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  68. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  69. </Application>
  70.  
  71. MainWindow.xaml:
  72.  
  73. <Window x:Class="Test.MainWindow"
  74. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  75. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  76. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  77. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  78. mc:Ignorable="d"
  79. Title="Тест" Height="350" Width="525">
  80. <Grid>
  81. <ItemsControl ItemsSource="{Binding Data}">
  82. <ItemsControl.ItemTemplate>
  83. <DataTemplate>
  84. <ItemsControl ItemsSource="{Binding}">
  85. <ItemsControl.ItemsPanel>
  86. <ItemsPanelTemplate>
  87. <UniformGrid Rows="1" IsItemsHost="True"/>
  88. </ItemsPanelTemplate>
  89. </ItemsControl.ItemsPanel>
  90. <ItemsControl.ItemTemplate>
  91. <DataTemplate>
  92. <TextBox Text="{Binding Value}"/>
  93. </DataTemplate>
  94. </ItemsControl.ItemTemplate>
  95. </ItemsControl>
  96. </DataTemplate>
  97. </ItemsControl.ItemTemplate>
  98. </ItemsControl>
  99. </Grid>
  100. </Window>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement