我的文本框是窗口上唯一的控件,它是更大应用程序的一部分。文本框包含一定量的文本,足以显示垂直滚动条。滚动条出现,但没有拇指:
我仍然可以使用鼠标滚轮或反复单击箭头按钮滚动内容。 当我使用相同的窗口和文本框创建一个新项目时,滚动条可以正常工作。 WrapPanel也是如此。您是否有想法可能会破坏我现有的项目并导致此问题?在generic.xaml中,我发现一些样式覆盖了scrollbar和scrollviewer的默认值,但即使完全清除generic.xaml也无济于事。
提前致谢!
编辑:对,代码。它只是XAML(没有c#支持代码)。<Window x:Class="TextBoxTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" MaxHeight="200" MaxWidth="200">
<TextBox x:Name="textbox" MaxLines="2" MaxHeight="50" VerticalScrollBarVisibility="Auto" TextWrapping="WrapWithOverflow">
Useless text..... asdasdasda ssssssssssssss sssssss ssssaokdoka sdojwoandowm nxaofwha398ua ozmca3u0a3j3 a80a9fu 03 u0sf u0s9jf4s 0cuj wuf0j w40 fcjw cujwfj9 c9 u49 wsuc j9w3
3089w 9f8u4wfv 0sf ufw0u w0fuw0 fwu f0uw 09djcazp zopf h43 wofh FYHFWFH WOWY HWO H wohg fujg 4g fugj 4 g0 4
4w fw4 f3f g555u45y 55 some more some moresome more some moresome more some moresome more some moresome more some more.
</TextBox>
</Window>
答案 0 :(得分:2)
答案是惊人的!
在我开始怀疑它可能是WPF错误之后,我找到了this forum thread。 问这个问题的家伙说:“我的应用程序使用来自用C ++编写的DLL的directx渲染器”。我的渲染器使用C#(MDX)编写并使用D3DImage互操作,差异几乎相同。
按照上面线程中提到的步骤,我将DirectX初始化从OnInitialize()移动到主窗口的Loaded事件回调,现在滚动条重新获得了预期的外观。在渲染器初始化之前,似乎必须首先显示GUI 。
所以我想在这种情况下讨论一个错误是合理的。
答案 1 :(得分:1)
这似乎是一种风格问题。从TextBox
中删除显式样式设置器(检查XAML和后面的代码)。如果TextBox
没有明确的样式,请搜索隐式样式(通过TargetType="TextBox"
或TargetType="{x:Type TextBox}"
和/或x:Key="{x:Type TextBox"}
定义)。
尝试snooping您的应用并检查ScrollViewer
的可视化树。它可能会给你一些见解。
希望这有帮助。
答案 2 :(得分:0)
猜测:您的TextBox
位于StackPanel
内。如果您想要的不仅仅是猜测,那么您需要提供代码。
答案 3 :(得分:0)
您可以解决在创建D3D设备期间添加 CreateFlags.FpuPreserve 的问题
示例:
this.device = new Device(0, DeviceType.Hardware, this.handle,
CreateFlags.HardwareVertexProcessing |
CreateFlags.PureDevice |
CreateFlags.FpuPreserve, this.pparams);