2010-04-04 3 views
0

컨테이너에 몇 가지 요소가 있고이 요소의 모든 속성을 저장하려고합니다. 이 요소를 VisualTreeHelper으로 나열하고 DB에 속성을 저장하면이 속성을 검색하여 영향을 미치는가? 나는 SilverlightSql-Server에서 Exec처럼 행동하는 성명서를 가지고 있다고 생각합니다.은 Silverlight에서 exec 명령을 좋아합니다 (요소의 속성을 동적으로 저장하고로드하십시오).

은 내가 세미콜론으로 구분 된 그 한 줄의 속성을 저장 (당신이 어떤 제안이있는 경우, 감사)

편집 :.이 시나리오 가정 : 최종 사용자가 Mytoolbox에서 도구 (Grid 같은 컨테이너를) 선택을 생성을위한 속성이 표시된 대화 상자가 표시되고 마지막으로 Grid을 그립니다. 재개시 그는 한 요소 (예 : Button)를 선택하고 그리드의 셀 중 하나에 놓습니다. 지금 나는 그/그녀가 만든 작업 공간을 저장하고 싶다! 내 RootLayout에는 하나의 컨테이너 컨트롤이 있으므로 요소 중 하나가이 하위 요소입니다. 지금까지 나는 모든 일반 속성 (안 모두)를 포함하는 하나의 문자열을 생성하고 DB에 저장 원하고, 내가이 컨트롤을로드 할 때, 나는 내가 저장 한 type하여 요소를 작성하고 등록하여 영향을 미치는 내가 저장; EXEC 명령과 같습니다.

이 가능합니까? 이 시나리오에 대한 새로운 접근 방식을 갖 춥니 다.

FINAL ANSWER HERE

+0

당신의 질문은 매우 이상하게 보입니다. 속성을 읽고 세미콜론으로 구분 된 문자열을 DB에 쓰는 방법을 알고 있지만 DB에서 같은 문자열을 읽고 그 동일한 속성을 다시 쓰는 방법을 모르십니까? a) 현재하고있는 일과 b) 정확히 당신이 고투하고있는 일에 대해 더 명시 해주십시오. – AnthonyWJones

+0

@AnthonyWJones : 나는 실용적인 예를 썼다. 당신은 이것을 위해 무엇을 가지고 있습니까? –

답변

1

당신은 로컬 하드 드라이브에 설정을로드/저장할 수 있습니다 Isolated File Storage을 시도 할 수 있습니다. 그렇게하는 것은 매우 간단합니다. 단지 몇 줄의 코드입니다.

는 내가 그것을 :)하지 않습니다 실버 라이트 Exec을

처럼

없음을 행동하지 약간의 문이 있다고 생각

편집 : 좋아, 여기 당신이 갈 수있는 방법에 대한 가이드 라인이다 로컬로 저장된 설정을 UI 요소에 적용하는 방법에 대해 설명합니다.

첫번째로, 사용자 설정 가능 컨트롤을 구현하는 것이다 인터페이스 결정 : 물론

public MyControl : IMySettableSettingsControl 
{ 
    public void ApplySettings(Dictionary<string, object> settings) 
    { 
     if (settings.Key.Contains("TextboxContents")) 
      someTextBox.Text = (string) settings["TextboxContents"]; 

     if (settings.Key.Contains("Height")) 
      this.Height = (double) settings["Height"]; 

     ((IMySettableSettingsControl) someChildControl).ApplySettings((Dictionary<string, object>) settings["MyChildControl"]) 
    } 

    public Dictionary<string, object> RetrieveSettings() 
    { 
     Dictionary<string, object> localSettings = new Dictionary<string, object>(); 
     localSettings.Add("Height", this.Height); 
     localSettings.Add("TextboxContents", someTextBox.Text); 

     localSettings.Add("MyChildControl", ((IMySettableSettingsControl) someChildControl).RetrieveSettings(); 
    } 
} 

을 수행 할 수 있습니다

public interface IMySettableSettingsControl 
{ 
    Dictionary<string, object> RetrieveSettings(); 
    void ApplySettings(Dictionary<string, object> settings); 
} 

지금 로컬로 설정을 유지됩니다 컨트롤이 인터페이스를 추가 당신이 좋아하는만큼 멋지게 - 내가 위에 보여준 것은 단순히 예일뿐입니다. 과거에 한 일은 My MainPage.cs 파일에 Isolated Storage의 설정을로드 한 다음 생성 한 각 컨트롤러의 생성자에서 Dictionary를 전달하여 각 컨트롤러가 생성 한 각보기에 전달합니다.핸들러에서 다음

Application.Current.Exit += new EventHandler(Current_Exit); 

과 : 나는이 작업을 수행 할 때

private void Current_Exit(object sender, EventArgs e) 
{ 
    Dictionary<string, object> settings = new Dictionary<string, object>(); 

    //call each UI control or controller, passing in the settings object 

    //now i can persist the settings dictionary to IsolatedStorage 
} 

는 물론 난 내 설정을 지속하기위한 사용자 정의 데이터 객체를 사용하여 설정을 저장하려면, 내가 종료 응용 프로그램의 이벤트를 처리 , 그리고 로컬 인스턴스를 찾을 수없는 경우 (또는 일부 이유로 저장이 중단 되었기 때문에 손상된 것으로 판명 된 경우) 기본 설정을 검색하도록 webservice를 호출 할 수있는 옵션이 있습니다.

위의 예를 취하고 슬라이스하여 주사위를 굴려 필요에 맞게 변경하십시오. 희망이 도움이됩니다.

+0

@slugster : 내 설정을 저장 /로드하는 방법을 알고 있습니다. 병목 현상은 어떻게이 속성을 내 elemnt로 설정할 수 있습니까? 답변 감사합니다. –

+0

편집을 확인하십시오. – slugster

+0

@slugster : 감사합니다. 귀하의 게시물은 훌륭합니다. 여기서 "object o = settings [key];"라고 쓰십시오. 괜찮아요.하지만 위대한 방법을 모르겠습니다. –

관련 문제