반응형
WPF의 코드 숨김을 통해 리소스에 액세스
다음과 같이 내 창 리소스에 사용자 지정 컬렉션이 정의되어 있습니다 (Sketchflow 앱에서 창은 실제로 UserControl 임).
<UserControl.Resources>
<ds:MyCollection x:Key="myKey" x:Name="myName" />
</UserControl.Resources>
x : Name으로 예상되는 코드 숨김에서이 컬렉션을 참조 할 수 있기를 원하지만 액세스 할 수없는 것 같습니다.
나는 그것을 사용하여 참조를 얻을 수 있습니다.
myRef = (MyCollection) this.FindName("myKey");
그러나 이것은 엉망인 것 같습니다. 이것은 나쁜 습관이며 무엇이 더 좋을까요? 감사 :)
System.Windows.Controls.UserControl
의 FindResource()
또는 TryFindResource()
메서드를 사용해야 합니다.
또한 리소스 딕셔너리에서 키 이름을 매핑하는 문자열 상수를 만드는 것이 좋습니다 (한곳에서만 변경할 수 있도록).
을 사용할 수도 있습니다 this.Resources["mykey"]
. 나는 그것이 당신 자신의 제안보다 낫지 않다고 생각합니다.
정확한 답변은 아니지만 밀접한 관련이 있습니다.
리소스가 다른 파일에있는 경우 (예 : ResourceDictionary.xaml)
간단히 추가 x:Class
할 수 있습니다 .
<ResourceDictionary x:Class="Namespace.NewClassName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<ds:MyCollection x:Key="myKey" x:Name="myName" />
</ResourceDictionary>
그런 다음 코드 뒤에서 사용하십시오.
var res = new Namespace.NewClassName();
var col = res["myKey"];
다음과 같은 리소스 키를 사용할 수 있습니다.
<UserControl.Resources>
<SolidColorBrush x:Key="{x:Static local:Foo.MyKey}">Blue</SolidColorBrush>
</UserControl.Resources>
<Grid Background="{StaticResource {x:Static local:Foo.MyKey}}" />
public partial class Foo : UserControl
{
public Foo()
{
InitializeComponent();
var brush = (SolidColorBrush)FindResource(MyKey);
}
public static ResourceKey MyKey { get; } = CreateResourceKey();
private static ComponentResourceKey CreateResourceKey([CallerMemberName] string caller = null)
{
return new ComponentResourceKey(typeof(Foo), caller); ;
}
}
xaml 코드 숨김이 아닌 다른 클래스의 리소스에 액세스하려면 다음을 사용할 수 있습니다.
Application.Current.Resources["resourceName"];
에서 System.Windows
네임 스페이스.
참고 URL : https://stackoverflow.com/questions/2117886/accessing-a-resource-via-codebehind-in-wpf
반응형
'Program Tip' 카테고리의 다른 글
Heroku : Heroku 오류 로그를 어떻게 확인할 수 있습니까? (0) | 2020.11.27 |
---|---|
Gulp uglify 출력 min.js (0) | 2020.11.27 |
Perl의 배열에 정규식 캡처를 어떻게 저장할 수 있습니까? (0) | 2020.11.27 |
Scala에서 구문 설탕의 모든 인스턴스는 무엇입니까? (0) | 2020.11.27 |
이 사용자가 익명인지 또는 실제로 내 시스템의 사용자인지 어떻게 확인합니까? (0) | 2020.11.27 |