비주얼 스튜디오 등에서 xaml파일을 볼때 보여지는 컨트롤은
그냥 보여지는게 아니라 Init 된 후 보여지는겁니다. (아마도? )
근데 만약 어떤 컨트롤이 초기화 될때
뭐 웹페이지의 어떤 스크립트를 호출한다든지 하는 코드가 있을때
그놈을 디자인모드에서 보면 에러가 나겠죠

그러면 Init할때
이놈이 디자인모드에서 보여지는지를 보고
아닐때만 적절한 초기화를 하면 됩니다.
그때 사용할 수 있는게

DesignerProperties.GetIsInDesignMode(DependencyObject element)

이놈입니다.
흐흐..
by 피요히코~ 2010. 12. 8. 15:06
실버라이트에서 datagrid를 사용할때
안에 기본 textbox나 textblock이 아니라 checkbox나 combobox등을 넣어서 사용해야 할 때도 있져.
근데 checkbox를 사용해서 checked이벤트를 이용해 뭔가 해야 할 때가 있습니다.

근데 이놈이
실제로 체크를 하지 않은넘들까지 지 혼자 체크가 되는 경우가 생깁니다.
(찾아보니 checkbox만의 문제는 아니라 datagrid의 스크롤과 관련된 문제로 보이네요)

위에 세놈을 체크하고 스크롤로 내려보면 아래에 엄한 애들까지 체크가 되어있고.
근데 이게 UI상에서는 체크가 되어 있지만 실제로 체크 이벤트를 타지는 않기 때문에
체크때 뭔가 작업을 해준게 있다면 거기엔 적용이 안됩니다. 허허...

해결방법은..
그냥 scrollviewer로 datagrid를 감싸주면 됩니다.-_-ㅋ
이게 정말 단순히 datagrid에서 스크롤이 일어날때 발생하는 문제인가 보네요

datagrid의 VerticalScrollBarVisibility를 hidden을 주고
감싸고 있는 scrollviewer에 VerticalScrollBarVisibility를 auto를 주고 테스트 해보니
잘 되네요..

실버라이트가 참.
이래저래 요상한 부분이 많네요. -_-
System.Data도 쓸수 있게 해줬으면. ㅠㅠ
by 피요히코~ 2010. 12. 1. 11:21

다른게 있을지 모르지만. 찾은게 이거라서.. (--)

실버라이트에서 특정 시간에(특정 시간이 흘렀을때) 뭔가 해줘야 할때 쓰면 좋습니다. 흐흐

몰라서 그렇지 알고 나면 아주 간단합니다.

DispatcherTimer 형식의 인스턴스를 만들어 주고
시간간격을 Interval 로 정해주고
Tick 이벤트 만들어줘서 실제로 수행할 일을 정해주고
Start(혹은 Stop) 해주면 끝입니다.


예를 들어보자면

DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(3) };

이런놈을 멤버변수 정도로 만들어주고(시간간격은 3초가 됩니다)

특정부분에서(로드시라든지 뭐..)

timer.Tick += new EventHandler(timer_Tick);

이렇게 이벤트 만들어주고

void timer_Tick(object sender, EventArgs e)
{
//안에 수행할 일들 넣어주고
}

이 타이머(?) 를 시작시킬 위치에서

timer.Start() ;

해주면 끗!!!

간단하네요~
by 피요히코~ 2010. 9. 28. 20:34
뭐. WPF에서도 될꺼 같긴 한데요. 일단 해본게 실버라이트니...

실버라이트는 파일이 두개로 나눠져 있죠.
(엄밀히 말하면 세개려나요..)
*.xaml
*.xaml.cs
*.g.cs <<- 요녀석은 프로젝트폴더의 obj폴더 안의 degug안에 뒤져보면 있어요.

실버라이트의 모든 페이지는 UserControl을 상속받잖아요.
근데 만약에
UserControl을 상속받은 다른 Class를 만든후에
그 Class를 상속받는 페이지를 만들고 싶을때!

단순하게
*.xaml.cs쪽에서 (만들어놓은 class명이 myUserControl 일경우
public partial class control1 : myUesrControl
이라고 하면 될듯 싶지만.
이게 잘 안되네요

왜냐.
이녀석들이 빌드되면서
xaml코드에 맞는 parial class를 자동생성해 주는데
(이놈이 *.g.cs)
여기는 상속받는 class가 UserControl로 되어있어요

partial class가 서로 상속받는 class가 다르니
꺼지라고 오류가 나옵니다.

이거때문에 한참 찾고 이거저거 해봤는데.
시베리아에서 답을 찾았네요. (찬용님 ㄳㄳ~~~)

방법은
하고나니 간단합니다. ㅠㅠㅋ

*.xaml코드를 보면. 시작태그가 있잖아요.
<Usercontrol x:Class="......
.........</Usercontrol>


이녀석을 바꿔주면 됩니다.
cs쪽에서 using하고 상속받고 하는거랑 비슷하네요

이름은 임의로 정할수 있어요
<tempControl:myUsercontrol 
 xmlns:tempControl="myUsercontrol의 네임스페이스"
 (나머지코드는 동일)........
......</tempControl:myUsercontrol>

이렇게 바꿔주면 되네요.

휴..
하고나니 이렇게 간단한걸. ㅠㅠ

by 피요히코~ 2009. 10. 14. 15:39
| 1 |