我使用Label
ScrollViewer
属性:
<Label ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto">
Here is many many many text.
</Label>
但是没有滚动条出现。即使使用Visible
代替Auto
。
这里有什么问题?
答案 0 :(得分:5)
您需要将ScrollViewer放在标签周围,它是一个单独的控件:
<ScrollViewer Width="50" Height="30" HorizontalScrollBarVisibility="Visible">
<Label>
Here is many many many text.
</Label>
</ScrollViewer>
答案 1 :(得分:5)
现在我想知道,为什么Label可以拥有ScrollViewer属性 什么时候他们根本不影响标签?
ScrollViewer属性是附加属性。附加属性通常具有独立于它们所应用的元素的默认行为(例如,ToolTipService
属性由服务处理,元素本身不需要知道任何关于它的信息),因此它们总是可以设置任何地方。
它类似于每个控件上的BorderBrush
属性。控件通常将此值传递给其模板中的Border
元素。大多数控件模板都包含Border,但许多控件模板不包含ScrollViewer。您可以编写包含一个的Label模板:
<Window.Resources>
<Style TargetType="Label">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ScrollViewer>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
RecognizesAccessKey="True" />
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Label ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
Content="text" />
请注意,即使我没有将TemplateBinding
添加到ScrollViewer
,这仍然有效。这是因为ScrollViewer
知道它自己的附加属性,并且如果它在模板中,则默认添加绑定。
正如您从模板中看到的那样,标签实际上只是一个设置了RecognizesAccessKey的内容展示者。这样用户可以根据文本使用 Alt 键盘快捷键。 Label
还定义了一个Target
属性,用于定义按下键盘快捷键时应选择的元素。标签是输入元素旁边的简短描述性文本。在您的情况下(显示需要滚动的长文本),可能没有必要。实际上,您可以直接将文本内容放在ScrollViewer中:
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
Here is many many many text.
</ScrollViewer>
答案 2 :(得分:4)
ScrollViewer
附加属性用于控制ScrollViewer
,它在控件的Template
中定义(这种控件的第一个例子是ListView
)。 ScrollViewer
的模板中没有Label
,因此在标签上设置此属性无效。
相反,您应该将Label
与ScrollViewer
一起包装,如JMK所示。
答案 3 :(得分:1)
您需要在ScrollView中添加标签并提供一些高度和宽度
<ScrollViewer HorizontalScrollBarVisibility="Visible" Height="40" Width="40" >
<Label>
Content
</Label>
</ScrollViewer>
答案 4 :(得分:0)
您必须将ScrollViewer放在Label周围。 像 -
<ScrollViewer HorizontalScrollBarVisibility="Visible">
<Label/>
</ScrollViewer>