programing

정적 클래스 속성에 바인딩하고 있습니다.

padding 2023. 4. 18. 21:49
반응형

정적 클래스 속성에 바인딩하고 있습니다.

텍스트 블록 텍스트를 정적 클래스의 속성에 바인딩합니다.정적 클래스의 속성 값이 변경될 때마다 다른 창 또는 사용자 정의 컨트롤에 있는 텍스트 블록에 반영됩니다.

x:Static 마크업 확장을 사용하여 정적 클래스의 모든 속성에 바인딩할 수 있지만 변경 추적을 구현하지 않으면 새로 고침 시 오류가 발생할 수 있습니다.

<TextBlock Text="{Binding Source={x:Static sys:Environment.MachineName}}" />

중첩된 정적 클래스를 사용하여 상수를 구성/분리하는 사용자용입니다.네스트된 스태틱클래스에 바인드 할 필요가 있는 경우는, 네스트된 클래스에 액세스 하려면 , 닷(.) 연산자 대신에 플러스(+) 연산자를 사용할 필요가 있는 것 같습니다.

{Binding Source={x:Static namespace:StaticClass+NestedStaticClasses.StaticVar}}

예:

public static class StaticClass
    {
        public static class NestedStaticClasses
        {
            public static readonly int StaticVar= 0;

        }
    }

이것은 나에게 효과가 있었다.

Text="{Binding Source={x:Static MyNamespace:MyStaticClass.MyProperty}, Mode=OneWay}"

없이.Mode=OneWay나는 예외가 있다.

나한텐 효과가 있었어!

다음과 같은 정적 속성을 가진 정적 클래스가 있는 경우

 namespace App.Classes
 {
     public static class AppData
     {
         private static ConfigModel _configModel;
         public static ConfigModel Configuration
         {
            get { return _configModel; }
            set { _configModel = value; }
         }
     }

     public class ConfigModel : INotifyPropertyChanged
     {
         public event PropertyChangedEventHandler PropertyChanged;

          private bool _text = true;
          public bool Text
          {
               get { return _text ; }
               set { 
                     _text = value; 
                     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Text"));
               }
          }
      }
}

이렇게 xaml에 묶을 수 있어요.

xmlns:c="clr-namespace:App.Classes"

<TextBlock Text="{Binding Path=Text, Source={x:Static c:AppData.Configuration}}"/>

언급URL : https://stackoverflow.com/questions/3862455/binding-to-static-class-property

반응형