2014-07-01 8 views
0

다음과 같은 것을 이해할 수 없습니다. 내 프로젝트는 Prism 4.1 Sliverlight 5입니다. MVVM 패턴을 사용하고 있습니다. 나는 아래와 같은 Shell.xmal이 클래스를 사용하려고이Silverlight 5, Prism 5.1 StaticResource Use 정적 클래스가 작동하지 않습니다.

{ 
    public static class RegionNames 
    { 
    public static string AUTH_LOGIN_REGION = "AuthRegion"; 
    public static string TAB_TEST_REGION = "TabRegion"; 
    public static string USER_TAB_REGION="UserTabRegion"; 
    } 
} 

같은 정적 클래스를했습니다. 텍스트가 나타나지 않았다 :
결과

<Grid.Resources> <inf:RegionNames x:Key="rName"></inf:RegionNames> </Grid.Resources> 

지금이 자원은 내가 TextBlock의 사용.

<TextBlock Text="{Binding Source={StaticResource rNamee}, Path=USER_TAB_REGION}" Margin="20"></TextBlock> 

는 지금은이 클래스 아래와 같이 변경 :

{ 
    public class RegionNames : INotifyPropertyChanged 
    { 
    public static string AUTH_LOGIN_REGION = "AuthRegion"; 
    public static string TAB_TEST_REGION = "TabRegion"; 
    public static string USER_TAB_REGION="UserTabRegion"; 

    public RegionNames() { 
     AuthReginName = "HOLY COW POW POW !!"; 
    } 

    private string _authReginName; 
    public string AuthReginName { 
     get { 
      return _authReginName; 
     } 
     set { 
      _authReginName = value; 
      OnPropertyChanged("AuthReginName"); 
     } 
    } 


    public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
} 

그리고이

<TextBlock Text="{Binding Source={StaticResource rNamee}, Path=AuthReginName}"></TextBlock> 

결과처럼 사용 : 텍스트

이 일이 시간이 등장. 왜? 정적 인 문자열 값이 나오지 않습니다. & 클래스의 개체 작성과 관련이 있습니까? 속성 값을 설정 하시겠습니까?

답변

0

먼저 속성으로 바인딩 할 수있는 인스턴스 개체의 경우 입니다. 이것이 바로 두 번째 솔루션이 적합한 이유입니다. (당신은 필드에 바인딩 할 수 없습니다)

그리고 static properties 당신은 필드에 바인딩 할 수 있지만 x:Static 태그 확장을 사용해야합니다. XAML에서 정적 : X 사용하려는 실버 5

정적 : X에 관한이 스레드

<TextBlock Text="{x:Static inf:RegionNames.USER_TAB_REGION}" Margin="20"/> 
+0

예 나는 나중에 이것에 대해 깨달았습니다. – akirti

+0

x : 정적 Silverlight 5에서는 정적 클래스이므로 정적으로 작동하지 않습니다. – akirti