Tag : LINQ, namespace, Silverlight, xml, 실버라이트
Silverlight 1.1 시대의 그것과도 다르고
DeepZoom Composer에서 자동 생성해주는 프로젝트에 들어있는 그것과도 다른...
MouseWheelHelper.cs - Ver. 휴즈플로우
void wheelHelper_Moved(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
if (e.Delta > 0) // 휠 버튼 업!
{
// Zoom In 따위를 구현
}
else if (e.Delta < 0) // 휠 버튼 다운!
{
// Zoom Out 따위를 구현
}
}
Tag : MouseWheelHelper, Silverlight, 실버라이트, 휠버튼, 휴즈플로우
Tag : flickr, Silverlight, uniqlock
Tag : DokDo, flickr, Silverlight, uniqlock, 독도, 실버라이트, 유니클락
네, 안녕하세요!
그것은 Visual Studio가 아직 Silverlight 2 Beta 2의 Feature인
VisualStateManager를 제대로 인식을 하지 못해서 보이는 에러입니다.
그럴 땐 한번 더 컴파일을 수행하시면 에러가 사라지는 것을 보실 수 있습니다.
프로그램을 실행하는데 전혀 지장이 없는 에러입니다.
Silverlight 2 정식버전 공개와 함께 나올 Visual Studio 2008 패치에서
문제가 해결되리라 생각합니다.
감사합니다.
상황설명
UserControl 부모와 UserControl 자식이
UserControl.Resource 하위에 같은 이름을 가진 스토리보드를 가지고 있는 상황에서,
자식을 생성하여 부모의 LayoutRoot.Children에 Add를 하려고 시도하면,
경우에 따라서 다음 그림과 같이 ArgumentException을 유발합니다.
실험조건
Fafamama 클래스 - 부모 역할을 하는 UserControl 입니다.
Son 클래스 - 자식 역할을 하는 UserControl입니다.
Daughter 클래스 - 자식 역할을 하는 UserControl입니다.
Fafamama는 LayoutRoot의 Opacity를 조정하는 sbShow란 Storyboard를 UserControl.Resources 하위에 가지고 있으며,
Son은 Fafamama를 쏙 빼 닮아 자신의 LayoutRoot의 Opacity를 조정하는 sbShow란 똑같은 이름의
Storyboard를 가지고 있습니다.
Daughter는 Son이 가지고 있는 스토리보드와 똑같은 스토리보드를 이름만 다르게 하여 가지고 있습니다.
Fafamama.MakeSons() 메서드 - 두 명의 아들을 생성합니다.
Fafamama.MakeDaughters() 메서드 - 두 명의 딸을 생성합니다.
총 6가지 케이스를 실험하기 위해 6번 Fafamama를 생성합니다.
Case 1) Fafamama의 생성자에서 MakeDaughters 호출
Case 2) Fafamama의 Loaded 이벤트에서 MakeDaughters 호출
Case 3) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeDaughters 호출
Case 4) Fafamama의 생성자에서 MakeSons 호출
Case 5) Fafamama의 Loaded 이벤트에서 MakeSons 호출
Case 6) 버튼 클릭에 의해 이미 생성되어 있는 Fafamama의 MakeSons 호출
라이브 실험
아래 실버라이트 어플리케이션 안에 실험 Case 6개에 대한 버튼을 준비 하였습니다.
한번 씩 눌러보십시오.
실험결과
부모와 같은 이름의 Storyboard를 가지고 있지 않은 Daughter의 경우, 언제나 예외발생 없이 생성이 된 반면,
UserControl 부모, 자식이 같은 이름의 스토리보드를 가지고 있는 Son의 경우,
생성자에서 호출 시를 제외하고서는 부모의 Panel에 Children.Add 할 수 없었습니다.
이런 경우를 만나신다면 당분간은 피해서(스토리보드 이름을 중복되지 않게 준다거나, 이름을 유지하고, 다른 객체의 Resources 하위로 옮김) 사용해야 하겠습니다.
다운로드
Tag : ArgumentException, Children.Add실패, Silverlight, Storyboard이름중복, 실버라이트
개요
Silverlight 2 Beta 2에서 Socket을 사용할 때 Cross-Domain에 있는 소켓 서버에
접속을 하려면 서버 측의 정책을 확인하는 과정이 필요하게 된 것 아시죠?
다시말해, 실버라이트 런타임이 943번 포트를 통해 실버라이트 정책 파일을 요청하면,
서버 쪽에서는 정책파일을 보내줘야 하는데요.
며칠 전 공도씨가 [MSDN] 네트워크 보안 접근 제약란 제목의 장문의 번역글을 포스팅했습니다.
그 내용의 하단에 보시면 그런 역할을 하는 서버를 만드는 방법이 소개되어 있습니다.
[소켓을 위한 정책 파일 예제]와 [소켓을 위한 정책 서버의 샘플 코드]란 내용이 있구요.
Mike Snows의 Tip of the Day #12 - Full Implementation of a Silverlight Policy Server.를
참고하면 정책 파일 서버를 만들 수 있다고 설명해 놓았습니다.
다운로드
아래는 그것을 그대로 따라서 만들어 놓은 프로젝트구요.
제가 조금 코드를 바꿔서 정책 파일 요청시 Socket Client의 IP를 화면에서 알 수 있도록
하였습니다.
PolicyConnection.cs
public PolicyConnection(Socket client, byte[] policy)
{
_connection = client;
_policy = policy;
_buffer = new byte[_policyRequestString.Length];
_received = 0;
try
{
// receive the request from the client
//_connection.BeginReceive(_buffer, 0, _policyRequestString.Length, SocketFlags.None,
// new AsyncCallback(OnReceive), null);
_connection.BeginReceive(_buffer, 0, _policyRequestString.Length, SocketFlags.None,
new AsyncCallback(OnReceive), client.RemoteEndPoint.ToString());
}
catch (SocketException)
{
_connection.Close();
}
}
...
private void OnReceive(IAsyncResult res)
{
try
{
_received += _connection.EndReceive(res);
// if we haven't gotten enough for a full request yet, receive again
if (_received < _policyRequestString.Length)
{
_connection.BeginReceive(_buffer, _received, _policyRequestString.Length - _received,
SocketFlags.None, new AsyncCallback(OnReceive), null);
return;
}
// make sure the request is valid
string request = System.Text.Encoding.UTF8.GetString(_buffer, 0, _received);
if (StringComparer.InvariantCultureIgnoreCase.Compare(request, _policyRequestString) != 0)
{
_connection.Close();
return;
}
// send the policy
Console.Write(string.Format("Sending policy to {0}\n", res.AsyncState));
_connection.BeginSend(_policy, 0, _policy.Length, SocketFlags.None,
new AsyncCallback(OnSend), null);
}
catch (SocketException)
{
_connection.Close();
}
}
미리보기
static void Main(string[] args)
{
Console.Write("Starting...\n");
PolicyServer ps =
new PolicyServer(@"D:\clientaccesspolicy.xml");
System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
}
감사합니다.
보너스
Beta1 시절 포스팅 되었던 스캇구 형님의 소켓 예제를 오늘 다시 한 번 찾아보니!
Beta2 버전으로 포팅이 되었습니다. 여기에도 Policy Server를 포함하고 있습니다.
한 번 훑어 보시면 도움이 되실 거라고 생각합니다.
Pushing Data to a Silverlight Client with Sockets: Part I
Pushing Data to a Silverlight Client with Sockets: Part II
Part I에서는 Socket Server를 Part II에서는 Socket Client를 설명하고 있습니다.
Tag : 943포트, clientaccesspolicy.xml, Silverlight, socket, 소켓, 실버라이트, 정책파일
Tag : MediaElement, Silverlight, 개수제한, 실버라이트
Tag : Hugeflow, Pigmap, RemixKorea, Silverlight, 리믹스코리아, 실버라이트, 피그맵, 휴즈플로우
MVP Lead이신 최재호 차장님께서 김밥과 생과일 음료를 준비해 놓으셨습니다.
사람 별로 안오는 것 같다고 최재호 차장님께서 두줄 씩 먹으라고 해서,
공도씨랑 김밥 3줄 먹었습니다. (참치, 모듬, 멸추)
멸추 김밥은 처음 먹어봤는데요. 멸치+고추장이었습니다. 매콤하더군요.
근데 왠걸 느즈막히 MVP님들 엄청오셔서 김밥이 모자랐습니다.
제가 가 본 (몇 번 가보지 않았으면서도...) MVP 모임 중 최다 출석이었던 것 같네요.
헤어스타일에 변화를 준 공도씨. 어울리죠?
시원하게 입은 동진씨!
7월 1일자로 Microsoft MVP가 되는 이과장님(오른쪽)과 짱묜(왼쪽)씨 오셨네요.
다시 한번 축하드립니다. 짝!짝!짝!
이날은 변경된 MVP 심사 과정에 대한 설명을 듣고 질의응답 시간을 가졌습니다.
내년에 Re-award 하려면 들어둬야겠죠?
PIO (Product Improvement Opportunity)에 대한 MVP의 지원자 수가 한국이 세계 1위를 했답니다.
그래서 본사로부터 칭찬 받으셨다고 좋아하시는 최재호 차장님.
프랑스가 2위를 했는데, 지원자 수가 한국의 반 정도 되었다네요.
한편, IE 8 관련 RoundTable이 7월 7일로 연기가 되었다고 하구요.
최재호 차장님 9월에 장가 가신다고 하네요! (축하드립니다.)
이날 끝나고 MVP분들 영화 보러들 가셨는데 (영화표는 마이크로소프트에서 제공),
저는 시간이 없어서 못 따라나섰네요. 강철중이나 쿵푸팬더 보신다던데, 재미있으셨죠?
Tag : IE8 Round Table, Microsoft, MVP, PIO, 오프라인
얼마전 마이크로소프트의 깜짝선물 for MVP란 포스트로 궁금증을 유발했던 선물을 공개합니다.
봉투 안을 열어보면, 까만 카드가 나옵니다.
뒷면은 내용을 읽어보실 수 있게 딥줌 데이터를 제공해 드리는 센스!!
아무튼 3개씩 보내준 것은 감동이었습니다.
Tag : DeepZoom, msdn, MVP, MVP의 혜택, Premium, VSTS, 딥줌