2013-03-05 1 views
1

좋아요, 제가 잘못하고 있다는 것을 받아 들일 준비가되었습니다. 그러나 이것은 제가 지금까지 생각 해낸 것입니다.색상을 업데이트하여 다음 번에 사용할 수 있도록 저장하는 방법은 무엇입니까?

나는 몇 개의 ListView가 있습니다. FileSystemInfo 항목이 있습니다. 리소스 사전의 스타일은 항목의 개체 유형에 따라 적용됩니다 (How to set the Style of a ListViewItem based on the class of the item 기준).

사용자에게 적용되는 색상을 변경하는 기능을 제공하고 싶습니다. 그 목적을 위해 여기 (http://svetoslavsavov.blogspot.com/2009/07/switching-wpf-interface-themes-at.html)에서 제안한 방법을 사용하여 ResourceDictionary를 편집 한 후 (현재는 Notepad ++로) 다시로드합니다.

이 ListView 항목을 다시 그리기 발생하지 않으며 색이 변경되지 않습니다. 간단히 두 개의 Resource xaml 파일을 사용하려고 시도했지만 색상을 업데이트하지 않습니다.

그렇다면 다음에 사용자가 응용 프로그램을 실행할 때 사용할 수 있도록 컨트롤의 색상을 업데이트하고 저장하는 것이 가장 좋습니다.

< - EDIT가 ->

는 구체적으로, 제가 한 일은이었다

1) 내가있는 ResourceDictionary에서 색상을 사용하는 스타일을했다. 이렇게 :

<Color x:Key="DirItemBkgdColor1" /> 
<Color x:Key="DirItemBkgdColor2" /> 

<Style x:Key="DirListViewItem" TargetType="ListViewItem"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush> 
       <GradientStop Color="{DynamicResource DirItemBkgdColor1}" Offset="0"/> 
       <GradientStop Color="{DynamicResource DirItemBkgdColor2}" Offset="1"/> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
</Style> 

2) 변경하고 싶은 각 색상에 대한 설정을했습니다. 3) 나는 다른과 하나 수정 :

this.Resources["DirItemBkgdColor1"] = FileTrackerWPF.Properties.Settings.Default.DirectoryBackColor1; 
this.Resources["DirItemBkgdColor2"] = FileTrackerWPF.Properties.Settings.Default.DirectoryBackColor2; 

나는 응용 프로그램과 내 응용 프로그램의 구성 창에서 OnStartup()에 코드의 그 라인을 넣어하고 그것이 마치 마법처럼 작동합니다. 이제 수십개로 확장하십시오 (무거운 UI입니다). 여기

답변

1

내가 그것을 할 것입니다 방법은 다음과 같습니다

  1. 것은 같은 동적 자원에서을 받고 색상을 필요로하는 모든 사용자를 제어해야합니다.
  2. 사용자가 색상을 선택할 수 있습니다. Extended WPF toolkit has a color picker
  3. 사용자에게 특정적인 색을 settings file에 저장하십시오.
  4. Override the resource 색상 및 응용 프로그램로드시 저장 설정이 저장됩니다.
+0

그래서 ResourceDictionary는 설정에서 색상을로드합니까? RD를 외부화 할 필요가 없습니다. 이것이 내가 뜻하는 바를 알게 될 것이다. 도와 주셔서 감사합니다. –

+0

예, 사용자가 이런 식으로 더 쉬울 수도 있습니다. –

+0

고마워, 내가 실제로하고 싶었던 것을 알아 낸 후에, 이것은 큰 도움이되었다. WPF에서 내가 가진 가장 큰 문제점은 새로운 XAML 컨텍스트에서 실제로 수행하고자하는 작업을 찾는 것입니다. 감사합니다. –

관련 문제