사용자 정의 속성을 XAML 값으로 설정하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
이 라이브러리가 맞춤형 도서관이 있습니다 색깔 속성. 이 속성을 다음과 같이 XAML로 사용할 수 있습니다.
<Style TargetType="{x:Type eg:MyWindow}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="CustomClass.CustomColorProperty"/>
</Setter.Value>
</Setter>
</Style>
포함 된 네임 스페이스 CustomClass 이미 참조되어 있습니다. 이것에 대해 어떻게 가야합니까? 감사.
편집하다:
방금 알아 차렸다 CustomClass 정적이므로 XAML에서 인스턴스를 만들 수 없습니다. 또한 입력 할 때 예 :, CustomClass Intellisense에는 나타나지 않습니다. 인스턴스 클래스가 있다면 필요한 솔루션을 얻을 수 없습니다. 이 상황에 대한 해결 방법이 있습니까?
편집 2 :
이것은 실제 클래스와 네임 스페이스입니다.
namespace Assergs.Windows
{
public static class OfficeColors
{
public class Background
{
public static Color OfficeColor1 = (Color)ColorConverter.ConvertFromString("#e4e6e8");
public static Color OfficeColor2 = (Color)ColorConverter.ConvertFromString("#dce0ed");
public static Color OfficeColor3 = (Color)ColorConverter.ConvertFromString("#a8c3e0");
}
}
}
그리고 이것은 XAML 네임 스페이스입니다.
xmlns:aw="clr-namespace:Assergs.Windows;assembly=Assergs.Windows"
그리고 Zenuka가 제안한 대로이 라인을 사용한다면 :
<SolidColorBrush Color="{x:Static aw:OfficeColors.Background.OfficeColor1}"/>
컴파일 타임 에이 오류를 던집니다.
Cannot find the type 'OfficeColors.Background'. Note that type names are case sensitive.
해결책
이것을 사용하십시오 :
<SolidColorBrush Color="{x:Static aw:OfficeColors+Background.OfficeColor1}"/>
중첩 클래스를 참조 할 점 대신 + 표시를 주목하십시오.
다른 팁
나는 당신이 CustomClass에 정적 속성을 가지고 있고 있습니까? 그런 다음 사용할 수 있습니다.
<SolidColorBrush Color="{x:Static eg:CustomClass.CustomColorProperty}"/>
하지만 네임 스페이스 접두사를 변경해야 할 수도 있습니다 ...
편집하다:
문제는 다른 클래스에서 수업을 선언하고 있기 때문에 있습니다 ... 나는 당신이 클래스 백 그라우드를 OfficeColors 클래스 외부에서 옮기고 그것을 정적으로 선언하거나 배경 클래스의 속성을 OfficeColors 클래스 (백그라운드 접두사 포함)로 옮기는 것이 좋습니다. ) 또는 당신이 시도하고있는 네임 스페이스를 사용합니다.
재미있게 보내세요 :)
edit2 :
중첩 클래스를 참조하기 위해 + 부호 'aw : inficecolors + background.officecolor1'을 사용하여 NIR의 메소드를 사용하십시오.
클래스의 인스턴스를 리소스 중 하나로 선언해야합니다. (CustomColorProperty가 정적이 아니라고 가정)
<CustomNamespace.CustomClass x:Key=CcInstance />
<Style TargetType="{x:Type eg:MyWindow}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding Source={StaticResource CcInstance}, Path=CustomColorProperty} />
</Setter.Value>
</Setter>
</Style>