주어진 Visual을 사용자에게 표시하는 간단하고 우아한 방법을 찾고 있습니다. 머리에서 벗어날 수있는 유일한 방법은 붓으로 그것을 치고 ScrollViewer에있는 사각형에 페인트하는 것입니다. 꼭 최선의 선택은 아닙니다.WPF 응용 프로그램에서 Visual을 표시하기위한 사용자 친화적 인 방법은 무엇입니까?
답변
내 (현재) 대답에 (부분) 예를 살펴하려는 경우
는 Visual.AddVisual의 예를 살펴 또는 XpsDocument를 만들고 DocumentViewer에 표시합니다. 나는 다소 복잡하지는 않지만 이미 그렇게 할 수있는 기반 시설을 갖추고 있습니다. 100 %는 아니지만 작동합니다.첫째, 내가 DocumentViewer.Document에 결합 할 수 있도록 행동 (자사의 friggen POCO, urgh) :
이public sealed class XpsDocumentBinding
{
#region Document
/// <summary>
/// The <see cref="DependencyProperty"/> for <see cref="Document"/>.
/// </summary>
public static readonly DependencyProperty DocumentProperty =
DependencyProperty.RegisterAttached(
"Document",
typeof(XpsDocument), //
typeof(XpsDocumentBinding),
new UIPropertyMetadata(null, OnDocumentChanged));
/// <summary>
/// Gets the value of the <see cref="DocumentProperty">Document attached property</see> on the given <paramref name="target"/>.
/// </summary>
/// <param name="target">The <see cref="DependencyObject">target</see> on which the property is set.</param>
public static XpsDocument GetDocument(DependencyObject target)
{
return (XpsDocument)target.GetValue(DocumentProperty);
}
/// <summary>
/// Sets the <paramref name="value"/> of the <see cref="DocumentProperty">Document attached property</see> on the given <paramref name="target"/>.
/// </summary>
/// <param name="dependencyObject">The <see cref="DependencyObject">target</see> on which the property is to be set.</param>
/// <param name="value">The value to set.</param>
public static void SetDocument(DependencyObject target, XpsDocument value)
{
target.SetValue(DocumentProperty, value);
}
/// <summary>
/// Called when Document changes.
/// </summary>
/// <param name="sender">The sender.</param>
/// <param name="e">The <see cref="System.Windows.DependencyPropertyChangedEventArgs"/> instance containing the event data.</param>
private static void OnDocumentChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var viewer = sender as DocumentViewer;
if (viewer == null)
throw new InvalidOperationException(
"This behavior is only valid on DocumetViewers.");
var doc = e.NewValue as XpsDocument;
if (doc == null)
return;
viewer.Document = doc.GetFixedDocumentSequence();
}
#endregion
}
그럼 내 모델에서 내가 XpsDocument
var pack = PackageStore.GetPackage(_uri);
if (pack != null)
return new XpsDocument(pack, CompressionOption.SuperFast, _uri.AbsoluteUri);
MemoryStream ms = new MemoryStream(2048);
Package p = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
PackageStore.AddPackage(_uri, p);
XpsDocument doc = new XpsDocument(p, CompressionOption.SuperFast, _uri.AbsoluteUri);
var writer = XpsDocument.CreateXpsDocumentWriter(doc);
var collator = writer.CreateVisualsCollator();
// write the visuals using our collator
collator.BeginBatchWrite();
collator.Write(Visual);
collator.EndBatchWrite();
p.Flush();
return doc;
나의 시각을 노출
DocumentViewer를 추가하고 비헤이비어를 통해 변환 메소드의 결과를 바인드하면됩니다. 나는 어딘가에 여기에 지름길이있을 것이라고 확신한다 ...
Visual에는 위치 나 크기가 없으므로 어떻게 할 수 있는지 알 수 없습니다. 아마도 FrameworkElement에 집착하여 스타일을 만들겠습니까?
음, 크기와 위치는 그것이 무엇인지에 따라 결정될 수 있습니다. 내가 찾고있는 것은 무엇입니까. 내가 그것을 넣을 수있는 것. – Will
Visual
또는 Visual
에서 파생 된 모든 개체를 호스팅하는 일반 래퍼를 호스팅하는 FrameworkElement
을 상속하는 래퍼를 만들 수 있습니다. 당신은 하나 이상의 시각적 호스트에 때려하는 것입니다 Using DrawingVisual Objects
글쎄, 내가 시각적으로 다른 시각 자료에 넣으면 나는 훨씬 더 멀리 떨어지지는 않는다. DrawingVisual에서 놀고 있었고 이미지에 넣을 수도 있었지만 토끼 구멍을 내려가는 것과 같았습니다 ... 어떻게하면 사용자가 쉽게 확대/축소하고 회전 할 수있는 사용자 경험을 얻을 수 있습니까? 비주얼? – Will
링크가 Visual.AddVisual을 가리키고 있지만 예제를 보면'FrameworkElement'에서'Visual'을 호스트해야합니다. - DrawingVisual 안에 넣을 필요가 없습니다. 혼란에 대해 죄송합니다. – Samuel
- 1. 사용자 친화적 인 데이터베이스는 무엇입니까?
- 2. 사용자 친화적 인 URL joomla1.5
- 3. MATLAB 또는 SciLab의 사용자 친화적 인 응용 프로그램 진입 점
- 4. WPF 응용 프로그램에서 색상환을 그리는 방법은 무엇입니까?
- 5. 최종 사용자를위한 사용자 친화적 인 phpMyAdmin?
- 6. 코코아 친화적 인 URL
- 7. 사용자 친화적 인 윈도우 모바일 설치
- 8. 사용자 친화적 인 명령 줄 프롬프트를 만들기위한 도구는 무엇입니까?
- 9. 사용자 친화적 인 URL을 CMS로 작성
- 10. 사용자 프로필 기능이있는 SEO 친화적 인 CMS
- 11. PHP에서 사용자 친화적 인 날짜 만들기
- 12. 아파치 친화적 인 URL
- 13. WPF 응용 프로그램에서 사용자 정의 커서 표시
- 14. htaccess로는, 친화적 인 URL을
- 15. PHP - 친화적 인 URL
- 16. SEO 친화적 인 URL
- 17. Struts2 친화적 인 URL?
- 18. 레일 친화적 인 URL을
- 19. iPhone 화면 잠그기에 대한 사용자 친화적 인 방법
- 20. WPF 응용 프로그램에서 XP 테마를 비활성화하는 방법은 무엇입니까?
- 21. 사용 SEO 친화적 인 링크
- 22. WPF 응용 프로그램에서 사용자 입력에서 연결 문자열 만들기
- 23. SEO 친화적 인 유니 코드 URL은 무엇입니까?
- 24. 프린터 친화적 인 웹 페이지 질문
- 25. 인간 친화적 인 날짜를 밀리 초로 변환
- 26. WPF 응용 프로그램에서 기본 브라우저로 웹 요청을 보내는 방법은 무엇입니까?
- 27. jQuery로 앵커 클릭을 시뮬레이트하는 브라우저 친화적 인 방법은 무엇입니까?
- 28. ASP.NET WebForms에서 SEO 친화적 인 DropDownList를 만드는 방법은 무엇입니까?
- 29. (기본 컨트롤러) 프린터 친화적 인 버전을 만드는 방법은 무엇입니까?
- 30. SEO 친화적 인 URL에서 # (해시) 문자를 처리하는 방법은 무엇입니까?
저급 넥타이가 필요한 이유는 무엇입니까? –
이것은 우리가 당신에게 대안을 줄 수 있도록 당신이 정말로 필요로하는 것에 대한 더 높은 수준의 설명으로부터 이익을 얻는 그러한 질문 중 하나와 같습니다. – Tergiver
@Aaron @Tergiver 대안이 존재하지 않습니다. 나는 비주얼을 결합하여 XpsDocuments를 생성합니다. 비주얼에서 확장 한 것이라 할지라도 나는 그것들을 비주얼이라고 알고 있습니다. – Will