그래서 WPF/C# 값 변환기를 사용하는 습관이 생겼습니다. 나는 보통 단지 값 변환기를 위해 폴더를 설정하고 필요한 xaml 파일에 액세스한다.내 사용자 정의 컨트롤에서만 값 변환기에 액세스 할 수 있습니까? (WPF)
현재 다른 클래스에 액세스하지 못하게하려는 일부 값 변환기가있는 사용자 정의 컨트롤을 개발 중입니다. 즉, 값 변환기는 코드 숨김 파일에 존재하며 해당 파일과 연관된 xaml에서만 액세스 할 수 있어야합니다. 내 첫 번째 생각은 중첩 된 클래스로 코드 숨김 파일 안에 던져 버리는 것이지만 xaml 파일에서 중첩 된 클래스에 액세스하는 방법을 찾을 수 없습니다. 나는 올바른 방향으로 가고 있는가, 아니면 내가해야만 할 다른 것이 있는가?
저렴한 방법으로이 컨트롤을 자체 네임 스페이스에 넣을 수는 있지만 문제가 실제로 해결되지는 않습니다.
도움이나 조언을 주시면 감사하겠습니다. 감사!
public partial class MyControl: UserControl
{
//misc code for control
private class MyValueConverter : IMultiValueConverter
{
//conversion functions
}
}
내가 생각하고있는 것입니다 : 아래
내가 원하는 것을 대략이다.
은 일반적으로는 WPF에서 액세스 값 변환기 좋아 :
`<local:MyValueConverter x:Key="MyValueConverter" />`
이 유일한 작품들이 같은 공간에있는 경우. 이 클래스가 중첩 된 클래스 인 경우이를 작동시키지 못합니다. valueconverter를이 사용자 정의 컨트롤에서만 볼 수있게하는 목표를 달성했지만 xaml 내에서 액세스하는 방법을 알지 못합니다.
내 문제는 xaml에서이 변환기에 액세스하고 있습니다.
여전히 중첩 클래스로 유지한다고 가정합니다. xaml 리소스 사전에서 변환기를 선언하는 데 익숙합니다. 여기서 "local"은 변환기의 네임 스페이스와 같습니다. –
brandon
@brandon Ah. 나는 "값 변환기가 파일 뒤의 코드에 존재한다고 ..."라고 말했을 때 코드 숨김에 변환기를 선언했다고 생각했습니다. XAML에서 선언하는 경우 정확히 어떻게 할 것인지 잘 모르겠습니다.생성 된 코드를 XAML에서 확인하고 변환기의 보호 수준을 볼 수 있습니다. 이미 '비공개'또는 '보호 된'상태 일 수 있습니다. –
모호한 점에 대해 사과드립니다. 원래 게시물을 편집하여 명확하게 처리하고 있습니다. – brandon