WinForms PropertyGrid
을 사용하여 WPF 응용 프로그램에서 객체 속성을 편집하고 있습니다. 그러나 PropertyGrid
은 특정 속성 유형에서 예상대로 작동하지 않습니다. 특히 Color
또는 Brush
유형의 속성을 표시하는 객체는 #FF000000
과 같은 텍스트로 표시되며 PropertyGrid
에서 해당 유형의 셀을 클릭하면 드롭 다운 색상 선택기 목록이 표시되지 않습니다. 이러한 유형의 내장 편집기가 존재한다는 것을 이해하고 있으므로이 작업을 수행하기 위해 추가 작업을 수행하지 않아도됩니다. (잘못하면 수정하십시오.)WinForms PropertyGrid가 WPF 응용 프로그램에서 예기치 않게 작동합니다.
간결함을 위해, 나는 막대한 양의 코드를 포함하지 않을 것이지만, 모든 것이 꽤 보일러라고 말하면 충분하다. 내 구현은 MSDN, SO 또는 무수히 많은 WPF PropertyGrid 예제에서 웹에 떠 다니는 것을 직접 추론합니다. PropertyGrid
은 WindowsFormsHost
으로 묶여 있으며 사용자가 개체를 편집하려고 할 때마다 팝업되는 Window
으로 바뀝니다. 이 가깝다 뭔가 :
`<Window>
<Grid>
<WindowsFormsHost>
<PropertyGrid>
...
</PropertyGrid>
</WindowsFormsHost>
</Grid>
</Window>
// BTW everything's implemented in code.
실제 객체는 물론 직접 PropertyGrid
에 전달되지 만, 미리 정의 된 방식에 대한 관심 만 속성을 노출 정의 PropertyEditorObjects
에 싸여 및 시간에 이들 PropertyEditorObjects
할 수있다 ICustomTypeDescriptor
을 구현하십시오. 특히 편집중인 오브젝트가 중첩 된 특성으로 PropertyGrid
에 노출 될 필요가있는 특성을 가진 하위 오브젝트를 가질 경우. 일반적으로 : 특정 속성 유형 (색상, 글꼴 등) 만 텍스트로 표시되어 있는지, 그리고 PropertyGrid
는 사용하지 않습니다
public class PropertyEditorObject
{
...
property bool SomeProperty { get; set; }
property Size AnotherProperty { get; set; }
property Brush YetAnotherProperty { get; set; }
[TypeConverter(typeof(ExpandableObjectConverter))]
property ContentProperties MoreProperties { get; }
};
public class ContentProperties : ICustomTypeDescriptor
{
// Implements all the usual ICustomTypeDescriptor stuff.
}
// The PropertyGrid.SelectedObject is set to an instance of the PropertyEditorObject.
모든 것은 내가이 글의 시작 부분에서 언급 한 것을 제외 작동 해당 유형에 적합한 편집기.
ColorDialog
, FontDialog
등과 같이 기본 제공 WinForms 편집기를 사용하여 휠을 다시 만들지 않고도이 유형을 편집하고 싶습니다. 앱은 데모 단계에만 있습니다. 이 문제에 대한 어떤 방향이라도 크게 감사 할 것입니다. 고맙습니다.
저는 오히려 형식 변환기를 제공하고 PropertyGrid를 사용하기 때문에 상당히 강력하고 시간이 오래 걸립니다. 나는 ExtendedWPFToolkit 사이트를 읽었지만 아직 아무것도 다운로드하지 않았다. 왜냐하면 내가 먼저 해결책을 찾아야겠다고 생각했기 때문이다. 또한 제 3 자 앱의 '커뮤니티 버전'에 대한 책임을지고 싶지는 않지만 잘 살펴 보겠습니다. 고맙습니다. –
충분하지만, WinForms 속성 표에서 WPF 형식에 대한 사용자 지정 편집기를 원한다면 어쨌든 직접 작성해야합니다. 시간이 많이 걸리는 "aspect"가 창 밖으로 나옵니다. –
앞서 언급 한 문제에 대한 해결책으로'Extended WPF Toolkit'과'PropertyGrid'를 사용하여 다운로드하고 설치하고 사용해 보았습니다. 그것을 싫어하지만, 내가 지불 한 것을 정확히 얻었습니다. NuGet의 설치 여부에 관계없이 몇 시간 동안 고생 한 후, 프로젝트 참조가 누락 되었기 때문에 하나씩 빌드 오류 수정,'# using' 지시자 - 대부분 문서화가 잘되어 있지 않은 경우. - 더 많은 문서화되지 않은 속성 등으로 내 속성을 다시 꾸미기 - 마침내 w/o 오류를 작성하여 실행하려고했습니다 ... –