2009-07-19 35 views

Trả lời

3

Trong WPF, dấu mũ thực sự là CaretElement, một FrameworkElement bên trong được sử dụng để hiển thị các khối lựa chọn và dấu mũ.

Nếu bạn không kế thừa từ một số loại kiểm soát đã cung cấp hỗ trợ dấu mũ và cố gắng thao tác nó, thật đáng buồn, bạn có thể phải đối mặt với sự cần thiết phải thực hiện nó từ đầu.

EDIT

CaretElement nằm trong khuôn khổ và có, không được ghi lại.

Ví dụ: here.

Triển khai tùy chỉnh nguồn đóng tồn tại trong gói commercial.

+0

Đó CaretElement không phải là tài liệu, thậm chí không thể truy cập phải không? – jmayor

+0

Câu trả lời đã chỉnh sửa cho đầy đủ. –

+1

Tôi đã tạo một bài viết giải thích để tạo một bài viết trong WPF http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox –

1

Dấu mũ trong WPF là một hoạt ảnh khác, không có API đặc biệt cho điều đó. Vẽ một đường và thay đổi độ mờ của nó bằng DoubleAnimation.

Nếu bạn có cái nhìn sâu hơn về Hộp văn bản WPF, dấu mũ thậm chí không làm 'đảo ngược pixel', nó chỉ là dòng màu xám được vẽ trên chữ cái.

Có khả năng bạn có thể thực hiện đảo ngược pixel trong WPF, bằng cách triển khai hiệu ứng đổ bóng pixel. Không đáng đâu. Phiên bản beta VS2010 không đảo ngược đối với dấu nháy chữ.

Ngoài TextBox/RichTextBox có 3 thành phần chỉnh sửa khác mà bạn có thể tìm thấy:

  • Biểu biên tập mã Blend
  • Visual Studio biên tập viên 2010 mã
  • SharpDevelop biên tập 4 mã
+0

Ok, đó là khó khăn ... và sau đó TExt nên được xử lý bởi sự kiện TextInput cũng như các sự kiện Preview/KeyDow/UP. Đó là một cơn ác mộng để làm cho nó từ đầu .... Cảm ơn sự giúp đỡ. Tất cả các bạn. – jmayor

+0

Nó chắc chắn là một cơn ác mộng chất lượng tốt. –

+0

Liên quan: [Làm cách nào để có được khoảng thời gian dấu nháy hệ thống trong .NET?] (Http://stackoverflow.com/questions/11986832/how-do-i-get-the-systems-caret-period-in-net) ... và trong khi không có cách nào trực tiếp để lấy tần số nháy mắt trong WPF ngoài việc sử dụng hoặc P/Invoke hoặc tham chiếu WinForms (quyết định cho chính bạn cái nào bạn coi là cái ác nhỏ hơn), lớp 'SystemParameters' của WPF cung cấp ['CaretWidth'] (http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.caretwidth.aspx) trường. –

Các vấn đề liên quan