실버라이트에서 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

간만에 하고 있는 실버라이트....
자주 써야 할꺼 같은걸 하나 정리합니다~

뭐 다른데서도 마찬가지지만
실버라이트에서도 프로그램 실행시 사용되는 이미지등을 리소스로 따로 모아두고 사용합니다.
이 리소스는 빌드액션(Build Action)방식에 따라 패키지되는 방식을 정할수 있는데

빌드액션은 다름 세가지로 분류됩니다.

1. None(없음) - 없으니까 리소스를 포함하지 않는거죠
2. Content(내용) - 리소스를 프로젝트 패키지파일(*.xap)파일에 포함합니다.
3. Resource(리소스) - 리소스를 프로젝트의 어셈블리파일(*.dll)에 포합합니다.


간단해 보이는 내용인데 왜 이걸 정리하느냐??
빌드액션에 따라서 리소스 참조 URI가 달라지기 때문이죠...(아.. 헷깔린다... ㅠ-ㅠ)

URI는 경로를 나타내므로 (당연히)상대경로와 절대경로가 있습니다.
그리고 참조해야 하는 리소스는
해당 프로그램의 패키지파일을 기준으로 패키지보다 상위에 있을수도 있고
패키지와 같은레벨에 있을수도
패키지 하위에 있을수도
패키지 하위의 어셈블리에 있을수도 있죠

1. 패키지보다 상위레벨에 존재하는 리소스의 경우에는 상대경로는 사용할 수 없습니다.  닥치고 절대경로...
   (ex : http://bravochoi.tistory.com/images/sample.jpg ) ( 없는 경로니 눌르는일 없도록... ㄷㄷㄷ)
2. 패키지와 같거나 하위레벨에 존재하는 리소스의 경우에는 상대/절대 경로 모두 사용 가능합니다. 
   (ex : http://bravochoi.tistory.com/resources/images/sample.jpg  절대경로)
   (ex : /resources/images/sample.jpg  상대경로)
   (ex : resources/images/sample.jpg   상대경로2)
3. 어셈블리에 들어있는 경우에는 /어셈블리명;component/경로 와 같은 형식으로 사용가능합니다.
   (ex : 패키지에 있는 resources.dll이라는 어셈블리에 sample.jpg가 있는 경우
           /resources;compenet/sample.jpg  요렇게)
4. 빌드애션을 Content로 해서 리소스가 패키지에 포함된 경우에는 상대경로로 접근해야 하며 시작은 / 로 해야됩니다
   (ex : /sample.jpg)
5. 빌드액션을 Resource로 해서 리소스가 프로젝트의 어셈블리에 포함되어 있을때는 상대경로로 접근해야 하며 / 를 붙이면 안됩니다.
   (ex : sample.jpg)
   (ex : images/sample.jpg)

3번과 5번의 차이는
5번은 프로젝트에 추가한 리스소용 파일을 빌드액션을  resource로 했을때 접근하는 방법이고
3번은 다른 어셈블리(참조추가된)에 있는 리소스에 접근할때 입니다.




 

by 피요히코~ 2010. 8. 25. 02:38
텍스트 컨트롤중 하나
읽기전용

Inlines를 이용하여 여러 서식 적용 가능

XAML


        
            
                
                    Hello
                
                
                    World
                
                
                
                    Test
                
            
        
    

CS
           TextBlock tb_Test = new TextBlock();//TextBlock 만들고
            Run rn = new Run();//Run 만들고
            rn.Foreground = new SolidColorBrush(Colors.Yellow); //Foreground 설정
            rn.FontFamily = new FontFamily("Arial");//Font 설정
            rn.FontSize = 20;//Size 설정
            rn.Text = "Hello";//Text 설정

            tb_Test.Inlines.Add(rn); //추가

            Run rn2 = new Run();
            rn2.Foreground = new SolidColorBrush(Colors.Blue);
            rn2.FontSize = 10;
            rn2.Text = "World";

            tb_Test.Inlines.Add(rn2);
            tb_Test.Inlines.Add(new LineBreak()); //LineBreak추가

            Run rn3 = new Run();
            rn3.Foreground = new SolidColorBrush(Colors.Black);
            rn3.FontSize = 15;
            rn3.Text = "Test";

            tb_Test.Inlines.Add(rn3);

            LayoutRoot.Children.Add(tb_Test);


by 피요히코~ 2009. 11. 30. 22:57
XAML
<Grid x:Name="MyGrid" Width="400" Height="400" ShowGridLines="True">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
</Grid>

 

CS
Grid grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition());
grid.RowDefinitions.Add(new RowDefinition());

grid.ColumnDefinitions.Add(new ColumnDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());

grid.ShowGridLines = true;


by 피요히코~ 2009. 11. 24. 23:19

EX) 버튼에 margin을 준다면

XAML에서
<Button x:Name="btn_MyBtn" Width="100" Height="100" Margin="5,5,5,5"></Button>

 

CS에서
Thickness thickness = new Thickness();
thickness.Left = 5;
thickness.Top = 5;
thickness.Right = 5;
thickness.Bottom = 5;

btn_MyBtn.Margin = thickness;



XAML에서의 margin순서는
CS에서와 같이
좌 상 우 하
by 피요히코~ 2009. 11. 24. 22:59

MyRect.Fill = new SolidColorBrush(Colors.Blue);
by 피요히코~ 2009. 11. 24. 22:55

 

1 27일 개최된 Microsoft TechDays Japan 2009 첫날 세션 “Silverlight의 미래는 오노 모토히사가 나와 Silverlight 2의 상세한 기능과 앞으로 추가될 기능들에 대해서 소개하였다.

 

Silverlight는 지금 어떻게 되어 있는건가?

Silverlight 2 2008 10월에 정식 릴리즈되었다. .NET 프레임웍의 부분집합형태로서 .NET 언어로 개발할 수 있게 된 것 외에 Silverlight Tools for Visual Studio 2008 SP1에 의해 VS상에서 비주얼한 개발도 되고 여러 컨트롤 컴포넌트도 표준으로 준비되어 기존 개발 노하우를 살려 효율적으로 개발할 수 있게 되어 실무에서 이용할 수 있게 되었다고 말하였다. 실제 북경 올림픽이나 오바마 대통령 취임식 중계등의 이슈도 나오기 시작하였다.

차기 버전인 Silverlight 3에서는 H.264/ACC코덱, 3D렌러딩, GPU 이용 지원이 예정되어 있다. 그 외, 리치한 데이터바인딩 기능, 컨트롤 확대, Linux대응(Monolight)등 한층 더 표현력 향상이 기대된다. 최근 Cloud 컴퓨팅이 주목받으면서 이에 알맞은 클라이언트쪽 성능향샹도 기대된다. 여기서 동향을 파악하고 싶은 RIA기술의 하나라고 말할 수 있을 것이다.

 

Silverlight 컨트롤

Silverlight 2에서는 버튼, 하이퍼링크, 체크박스, 데이터그리드 등 대표적인 응용프로그램에 이용되는 컴포넌트를 표준으로 제공하고 있다.

또한, Silverlight 3에 포함될 현재 개발중인 컨트롤은 Silverlight Toolkit으로 CodePlex에 공개되고 있다. 소스코드 이외, 문서나 샘플, 유닛테스트도 공개되어 있기 때문에, 실제로 다운로드하여 테스트해보는 것이 좋다. 정기적으로 릴리즈와 고객의 피드백을 통해 안정적인 상황에서는 자주 이용되는 것은 코어런타임으로서 포함되고 그 이외는 SDK Tools로서 릴리즈된다고 한다.

 

 fig03.jpg

소스코드 주석에 있는 <QualityBand> Stable이면 안정화버전, “Mature”라면 리테일버전

 fig04.jpg


일본어 지원하는 샘플페이지(한글페이지는 언제쯤 ㅠ_)

 

Silverlight Toolkit의 각 컨트롤

새로운 컨트롤은 WPF로부터 이식한 컨트롤과 Silverlight 독자적인 컨트롤 2가지로 나누어진다. 전자는 컴포넌트 레이아웃을 처리하는 DockPanel이나 컨텐츠를 전개하고 포함시키는 Expander, 네스트된 계층구조를 표시하는 TreeView등이 있다.

fig05.jpg 


DockPanel HTML <div>태그에 의한 레이아웃과 같은 배치가 가능


fig06.jpg
Expander,
아이콘을 클릭하면 4개 방향으로 전개할 수 있는 컨테이너

 

후자의 경우 입력내용을 보완하는 텍스트박스 AutoComplete나 다양한 그래프 표시가 가능한 Charting등이 있다. 컨트롤 개발팀은 WPF Silverlight를 같이 하고 있어, 이런 컨트롤의 WPF대응판도 준비중이라고 한다.

 fig07.jpg


AutoComplete, 입력보완 텍스트박스


fig08.jpg
Charting,
공통 데이터포멧으로 여러형태의 표를 표시

 

또한, 응용프로그램 외형 통일이나 변경이 쉽게 하는 스타일도 지원되어 현재 9가지 테마가 제공된다. XAML상에서 지정하는 것만으로 간단하게 테마를 적용할 수 있다.

 fig09.jpg


Theming, 스타일 통일이나 변경이 쉽게

 

Silverlight의 미래 및 모바일 대응

Silverlight 방향성으로서 많은 사용자들에게 사용되는 Reach라는 사용자 경혐을 제공하는 Rich 2가지 축이 되는 모바일 대응에 대한 내용도 소개되었다. Silverlight 2를 기반으로 Silverlight 2 for mobile CTP가 현재 2009년 제1/4분기에 나올 예정이고 2009년내에 릴리즈될 예정이라고 한다. 당초 탑재될 예정인 기기로는 Windows Mobile Nokia S60이라고 한다.

실제 에뮬레이터를 이용한 개발중인 데모를 봤지만, 에뮬레이터에서는 응용프로그램 시작에 시간이 다소 걸렸지만, 3D처리나 동영상 재생, 웹서비스 이용등은 PC의 브라우저에서 실행하는 것과 차이가 없었다. 실제 실용적인 레벨까지 개량된 것 같다.

추가로 개발언어 사용구분에 대해서는 가벼운 기능으로 실행 시간을 짧게 하고 싶은 경우 자바스크립트로 처리하고 고급기능을 이용하고 싶은 경우 실행시간이 좀 걸리지만, .NET 프레임웍 기반으로 구현하면 좋다고 한다.

 fig10.jpg


에물레이터와 PC브라우저의 3D이미지 표시



출처: Codezine

익스프레션 웹 사용자카페: http://cafe.naver.com/expressionweb

by 피요히코~ 2009. 2. 26. 11:51
| 1 |