|
1 |
| -using Newtonsoft.Json; |
| 1 | +using Microsoft.Toolkit.Uwp.UI.Controls; |
| 2 | +using Newtonsoft.Json; |
2 | 3 | using System;
|
3 | 4 | using System.Collections.ObjectModel;
|
4 | 5 | using System.ComponentModel;
|
@@ -61,7 +62,7 @@ protected override void OnNavigatedTo(NavigationEventArgs e)
|
61 | 62 |
|
62 | 63 | private MessageEventArgs _lastMsg;
|
63 | 64 |
|
64 |
| - private async void OnViewLifetimeControlMessageReceived(object sender, MessageEventArgs e) |
| 65 | + private void OnViewLifetimeControlMessageReceived(object sender, MessageEventArgs e) |
65 | 66 | {
|
66 | 67 | _lastMsg = e; // Store to complete in DragItemsCompleted.
|
67 | 68 | }
|
@@ -149,25 +150,34 @@ private void Items_Drop(object sender, DragEventArgs e)
|
149 | 150 |
|
150 | 151 | if (data != null)
|
151 | 152 | {
|
152 |
| - //var minpos = pos; |
153 |
| - //var mindist = 1000.0; |
154 |
| - //var minindex = -1; |
155 |
| - //foreach (var item in Items.Items) |
156 |
| - //{ |
157 |
| - // var tab = Items.ContainerFromItem(item); |
158 |
| - // var p = e.GetPosition(tab as UIElement); |
159 |
| - // var amt = Math.Abs(p.X - minpos.X) + Math.Abs(p.Y - minpos.Y); |
160 |
| - // if (amt < mindist) |
161 |
| - // { |
162 |
| - // minindex = Items.IndexFromContainer(tab); |
163 |
| - // mindist = amt; |
164 |
| - // minpos = p; |
165 |
| - // } |
166 |
| - //} |
167 |
| - |
168 |
| - |
169 |
| - // TODO: Figure out how to insert this in the right place. |
170 |
| - TabItems.Add(data); |
| 153 | + // First we need to get the position in the List to drop to |
| 154 | + var listview = sender as TabView; |
| 155 | + var index = -1; |
| 156 | + |
| 157 | + // Determine which items in the list our pointer is inbetween. |
| 158 | + for (int i = 0; i < listview.Items.Count; i++) |
| 159 | + { |
| 160 | + var item = listview.ContainerFromIndex(i) as TabViewItem; |
| 161 | + |
| 162 | + var p = e.GetPosition(item); |
| 163 | + |
| 164 | + if (p.X - item.ActualWidth < 0) |
| 165 | + { |
| 166 | + index = i; |
| 167 | + break; |
| 168 | + } |
| 169 | + } |
| 170 | + |
| 171 | + if (index < 0) |
| 172 | + { |
| 173 | + // We didn't find a transition point, so we're at the end of the list |
| 174 | + TabItems.Add(data); |
| 175 | + } |
| 176 | + else if (index < listview.Items.Count) |
| 177 | + { |
| 178 | + // Otherwise, insert at the provided index. |
| 179 | + TabItems.Insert(index, data); |
| 180 | + } |
171 | 181 |
|
172 | 182 | Items.SelectedItem = data; // Select new item.
|
173 | 183 |
|
@@ -237,6 +247,16 @@ private void InitializeTestData()
|
237 | 247 | Title = "Item 4",
|
238 | 248 | Content = "Nullam sollicitudin magna dui, imperdiet vulputate arcu pharetra eu. Vivamus lobortis lectus ut diam pretium, ut fermentum est malesuada. Sed eget pretium nisi. Cras eget vestibulum purus. Vivamus tincidunt luctus maximus. Cras erat enim, molestie sit amet tortor sit amet, porttitor tincidunt neque. Nam malesuada odio justo, sed sagittis tellus mollis in. Proin congue enim quis libero faucibus, eu condimentum dolor convallis. Mauris blandit ipsum sit amet maximus convallis. Integer porta dolor id purus hendrerit, a semper mi blandit. In malesuada lacus a tellus interdum, vel consequat turpis molestie. Curabitur eget venenatis massa."
|
239 | 249 | });
|
| 250 | + TabItems.Add(new DataItem() |
| 251 | + { |
| 252 | + Title = "Item 5", |
| 253 | + Content = "Etiam egestas, tellus ut molestie cursus, odio eros accumsan nulla, ut tempor libero nisi a ante. Sed posuere, velit id dictum lobortis, magna lorem dapibus urna, vitae mattis tellus libero et ligula. Praesent vel orci vehicula, accumsan ipsum ac, venenatis erat. Vestibulum consequat nulla eget arcu accumsan, tempus condimentum nulla euismod. Cras mattis tellus tortor, vitae vulputate lectus vulputate ac. Nunc nisl est, porttitor vitae diam a, pulvinar faucibus augue. Morbi vitae bibendum sem, non porta dolor. Cras turpis sem, rhoncus eget ultrices a, pretium venenatis libero. Fusce convallis eu sapien eu imperdiet. Nullam pulvinar ante a lobortis commodo. Aenean at est vel est faucibus efficitur in eget turpis. In efficitur bibendum dolor vitae dapibus. Mauris dapibus risus sit amet lectus ornare, et eleifend urna pretium. Integer non semper nibh, sit amet bibendum nulla. Nulla facilisi." |
| 254 | + }); |
| 255 | + TabItems.Add(new DataItem() |
| 256 | + { |
| 257 | + Title = "Item 6", |
| 258 | + Content = "Integer in pulvinar justo, non venenatis leo. Nam quis pulvinar libero, id laoreet elit. Nunc vehicula vitae lectus et venenatis. Etiam et porta dui. Nulla rutrum lacinia dolor. Nullam convallis libero eget nisi tristique, quis convallis enim finibus. Suspendisse consectetur lorem eleifend sem venenatis ultrices. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nunc ligula urna, aliquam vitae est a, dictum gravida nulla. Sed eu vestibulum nisl. Phasellus rhoncus volutpat mauris, vitae semper quam molestie et. Fusce mattis turpis a congue maximus. Suspendisse justo dui, varius non metus vel, euismod pretium velit." |
| 259 | + }); |
240 | 260 | }
|
241 | 261 | }
|
242 | 262 | }
|
0 commit comments