我有一个应用程序,其中是一个准IDE,其中TreeView充当解决方案资源管理器。用户设计的是屏幕布局,看起来像这样。
Root
Menus
MainMenu
MenuItem1
Button Bars
MainBar
Button1
我最初遇到了上下文菜单的问题。在上面的示例中,MenuItem1没有上下文菜单,但MainMenu没有。好吧,MenuItem1将继承MainMenu的上下文菜单。通过创建一个空的上下文菜单并将其分配给MenuItem1,我得到了这个结果。我想要更优雅的东西。
我在工具提示方面遇到了同样的问题。如果我为MainMenu分配一个,那么MenuItem1将继承分配给MainMenu的那个。我尝试将MenuItem1工具提示设置为null,什么也没做。如果我将其设置为“”,空字符串将覆盖MainMenu工具提示,但当您将鼠标悬停在MenuItem1上时,会出现一个小的空工具提示框。我认为系统本身足够智能,如果它是一个空字符串但显然没有显示该框。
如何阻止孩子从父母那里继承上下文菜单和工具提示属性?
更新
仍有问题。我使用Snoop分析了我的项目,它表明这些属性是不健康的,但我仍然没有看到任何破坏继承的解决方案。
我能想到的唯一的问题是,每个工具提示都要处理ToolTipOpening事件并检查字符串,如果它没有长度,则jsut立即关闭它。必须有更好的方法。
答案 0 :(得分:4)
我遇到了完全相同的问题,但我发现了一个适合我的解决方案。我更改了工具提示的可见性,以便不再显示空字符串。
System.Windows.Controls.ToolTip tt = new System.Windows.Controls.ToolTip();
tt.Content = tooltipDescription;
if (tooltipDescription == null)
tt.Visibility = Visibility.Collapsed;
item.ToolTip = tt;
答案 1 :(得分:1)
您是否尝试过设置ToolTipService.IsEnabled="False"
这将禁用所需元素上的工具提示。
答案 2 :(得分:0)
首先屏蔽工具提示应该使用null而不是string.empty。其次,如果您已经为树视图使用了分层数据模板和itemssource绑定,那么您可以根据模板层次设置工具提示(例如从模型或itemssource绑定到对象层次结构中的属性),在这种情况下,它们必须已生效根据您的特定树视图项目。
截至目前,您可以使用null来屏蔽。
答案 3 :(得分:0)
对于我自己,我创建了一个零宽度和高度的样式:
<Style x:Key="NullToolTip" TargetType="{x:Type ToolTip}">
<Setter Property="Width" Value="0" />
<Setter Property="Height" Value="0" />
<Setter Property="Content" Value="{x:Null}" />
</Style>
当我使用此样式创建工具提示并放入资源时:
<ToolTip x:Key="NoToolTip" Style="{StaticResource NullToolTip}" />
然后为每个项目设置此工具提示:
<TreeViewItem Header="Sample" ToolTipService.ToolTip="{StaticResource NoToolTip}">
或风格:
<Setter Property="ToolTipService.ToolTip" Value="{StaticResource NoToolTip}" />
在这种情况下,item的null 工具提示将是默认值,但是当您设置工具提示时,只会为他定义。
答案 4 :(得分:0)
这里的其他答案对我来说都有问题,所以这里我提出的方法可以避免显示父项目提示的子树项目。
与其他一些答案类似,我使用带有Tooltip
属性的setter的样式。关键的区别是:
Visibility
元素的ToolTip
,而不是显示提示的TextBlock
元素。TextBlock
元素包装Border
。这可以避免偶尔看到一个微小的,空的尖端块。<local:StringToVisibilityConverter x:Key="strToVisibilityConverter"/>
<Style x:Key="MyTreeStyleKey" TargetType="TreeViewItem">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Visibility="{Binding TipText, Converter={StaticResource strToVisibilityConverter}}">
<Border>
<TextBlock Text="{Binding TipText}"/>
</Border>
</ToolTip>
</Setter.Value>
</Setter>
</Style>
StringToVisibilityConverter
是我创建的一个简单的转换器,它返回Visibility.Collapsed
的null或emptry字符串,否则为Visibility.Visible
。
答案 5 :(得分:0)
from pdf2image import convert_from_path
from PIL import Image
import pytesseract
import os
def OCR(pdf):
pdfName = pdf.split('.pdf')[0]
pages = convert_from_path(pdf, 500)
image_counter = 1
for page in pages:
filename = "page_"+str(image_counter)+".jpg"
page.save(pdfName+filename, 'JPEG')
image_counter = image_counter + 1
filelimit = image_counter-1
f= open(pdfName+".txt","wb")
text = ''
for i in range(1, filelimit + 1):
filename = pdfName+"page_"+str(i)+".jpg"
text += str(((pytesseract.image_to_string(Image.open(filename)))))
text = text.replace('-\n', '')
text = text.replace('\n',' \n')
os.remove(pdfName+"page_"+str(i)+".jpg")
f.write(text.encode('utf-8','replace'))
f.close()
return text