Windows Phone 82013.03.04 13:41

 

List 에 1,2,3 이 있으면 3,2,1 로 불러오고 싶을떄

 

List의 Reserve() 메소드를 이용한다.

 

하지만 옵저버블 컬렉션에서는 안되지만 방법이 있을듯하다.

 

 

 

참고 : http://msdn.microsoft.com/ko-kr/library/b0axc2h2(v=vs.85).aspx

Posted by 동동(이재동)
Windows Phone 72012.03.08 16:27

현재 Mnet을 작업하는데 Mnet에서 PlayList를 순서를 마음대로 바꿀수 있게 바꿔야 했다.

아이폰에서나 가능한 순서 바꾸기… 아무리 찾아봐도 순정 Listbox에는 할수 없다.

아이폰이나 안드로이드는 기본컨트롤에서 바꿀수 있는데 왜 윈폰은 없냐고!!!

하지만 누군가 만들어 놓은게 있어서 고맙게 이용해서 성공했다.

 

 

수정모드를 설정할수 있으며

수정모드에서 삭제버튼등을 추가할려면 아쉽게도 DataTemplate을 바꾼후 다시 리로딩해서 수정모드로 가야 한다.

바꾸는 방법은 포스팅했으니 참고 바란다.

자세한 사항은 소스를 참고하자

내가 참고한곳 : http://blogs.msdn.com/b/jasongin/archive/2011/01/03/wp7-reorderlistbox-improvements-rearrange-animations-and-more.aspx

내가 새로 만든 테스트 소스

Posted by 동동(이재동)
Windows Phone 72012.01.30 20:39

코레일을 하다가 index값을 구해야 하는 경우가 생겼다.

하지만 Linq에서 where 문을 이용해서 firstOrDefault()를 이용해서 값을 얻어 왔지만 그 값이 List의 몇번째 값인지는

알수 없었다. 다른데서는 지원되는데 윈폰7의 compact .net framework에서는 제공되지 않는것인가? ㅠㅠ

그래서 여러가지 방법중 좋은 방법을 찾았다.

그 방법은 바로..두구두구두구..

그냥 직접 제작하는것이다 하하하

일단 구현한 클래스는 이렇다.

using System;
using System.Collections.Generic;

namespace GloryApp.Utils
{
    public static class IEnumerableExtensions
    {
        public static int IndexWhere<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
        {
            var enumerator = source.GetEnumerator();

            int index = 0;

            while (enumerator.MoveNext())
            {
                TSource obj = enumerator.Current;

                if (predicate(obj))

                    return index;

                index++;
            }

            return -1;
        }

        public static int IndexWhere<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
        {
            var enumerator = source.GetEnumerator();

            int index = 0;

            while (enumerator.MoveNext())
            {
                TSource obj = enumerator.Current;

                if (predicate(obj, index))

                    return index;

                index++;
            }

            return -1;
        }
    }
}

 

그리고 위의 프레임워크를 사용할 클래스에 using 하면

var temp = siList.IndexWhere(c => c.h_srcar_no == currenSrcarNo);

이런식으로 얻어 올수 있다.

 

참고 : http://snipplr.com/view/53625/

Posted by 동동(이재동)