2012. 5. 6. 01:17

우리가 자주 사용하는 특정 배열이 변하지 않는다는 가정을 하고, 그 배열을 이곳 저곳 (List Box)에서 반복해서 사용해야 한다고 생각해보자. 

이렇게 다른곳에서 참조하여 사용하고 싶을대 이 배열을 리소스 엘리먼트안에 넣는다면 그러한 방식으로 사용 할 수 있다.


WPF의 리소스들은 문자열 배열과 같은 마크업의 커스텀 데이터를 보여주기 위해서 주로 사용한다.




 <Page

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:CorLib="clr-namespace:System;assembly=mscorlib">

  <StackPanel>

    <StackPanel.Resources>

      <x:Array Type="CorLib:String" x:Key = "GoodMusic">

        <CorLib:String>Sun Kil Moon</CorLib:String>

        <CorLib:String>Red House Painters</CorLib:String>

        <CorLib:String>Besnard Lakes</CorLib:String>

      </x:Array>

    </StackPanel.Resources>

    <Label Content ="Really good music"/>

    <ListBox Width = "200" ItemsSource ="{StaticResource GoodMusic}"/>

  </StackPanel>

</Page>


그리고 이렇게 staticResource마크업 확장자 식으로 ListBox에 대입되게 되면 초기 바인딩 이후에 값이 변하지 않고 항상 유지된다. 다른것이 향후 변경된다하더라도 이 staticResource를 참조한 컨트롤의 값은 변하지 않는다.


이것을 허용하기 위해서는 DynamicReosurce를 이용해야 한다. 



Posted by k1rha