我正在创建一个显示十六进制值的控件(例如FFAA-CA10-56D7)。现在,价值由图像组成。控件的值如下所示:
对于只读控件,我没有问题。我可以根据值放置适当的图像。因此,如果我必须将值设置为FF
,我将遍历字符串上的字符,然后放置相应的图像。
现在问题是,带有读写控件。如果我能使用相同的字体会很好。现在我在用户键入值时附加图像。 但它不友好。如果用户想通过拖动鼠标选择3个字符怎么办?或者我如何执行将选择多个字符的shift +箭头组合键。
所以简而言之我希望保持控件的外观和感觉,我不想替换文本框的图像。你们建议采用什么方法,以便保持相同的外观和感觉。
我尝试过的事情:
我尝试从那些png创建自定义字体。但是没有成功找到能够让我从png图像创建字体的正确程序。
答案 0 :(得分:2)
我会通过使用带有Horizontal StackPanel的自定义ListBox作为其ItemPanelTemplate来实现此目的,并且其ItemsSource将是char列表。那么你可以提供一个适当的DataTemplate包含相应的图像(依赖于char值,可能使用DataTriggers)。 ListBox具有Multiselection,因此您在模仿TextBox的Text Selection行为时应该没有问题,并且通过将List of char作为ItemsSouce,您还可以允许复制(通过在ListBox中执行您自己的EditCommands.Copy实现。 / p>
编辑:这是您肯定希望实施自己的Custom Control
的案例之一