Wpf 放置此ScrollViewer会引发错误
我有一个WPF窗口,它有一个自定义边框、用于调整大小的拇指控件和两列布局。右边的列(主要内容区域)是一个带有ScrollViewer的用户控件,因此它可以根据需要滚动。我想在左列添加一个ScrollViewer,但当我添加时,在运行时它会给我 “System.Windows.Controls.Primitives.ScrollBar”的初始化引发异常 除了 无法将类型为“MS.Internal.NamedObject”的对象强制转换为类型为“System.Windows.FrameworkTemplate” 如果我拿出ScrollViewer,一切都会恢复正常 以下是基本的XAML(ScrollViewer环绕在TaskPane ItemsControl中):Wpf 放置此ScrollViewer会引发错误,wpf,scrollviewer,Wpf,Scrollviewer,我有一个WPF窗口,它有一个自定义边框、用于调整大小的拇指控件和两列布局。右边的列(主要内容区域)是一个带有ScrollViewer的用户控件,因此它可以根据需要滚动。我想在左列添加一个ScrollViewer,但当我添加时,在运行时它会给我 “System.Windows.Controls.Primitives.ScrollBar”的初始化引发异常 除了 无法将类型为“MS.Internal.NamedObject”的对象强制转换为类型为“System.Windows.FrameworkTem
...
...
我在网上搜索过,但能找到这方面的任何东西。我尝试使用ScrollViewer作为布局根目录创建另一个UserControl,但出现了相同的错误。不知道这是否是问题所在,但您没有将“StackPanel”的行和列设置在“ScrollViewer”之后。不知道这是否是问题所在,但是您没有将“StackPanel”的行和列设置在“ScrollViewer”之后。您是否有在任何资源中定义的
ScrollViewer
样式?我看到了可能与此相关的链接:
错误通常发生在一个样式使用第二个样式时,但在第一个样式之后添加第二个样式。很难诊断错误。您是否在任何地方的资源中定义了
ScrollViewer
样式?我看到了可能与此相关的链接:
错误通常发生在一个样式使用第二个样式时,但在第一个样式之后添加第二个样式。很难诊断错误。您有任何代码吗?例如用于调整大小的代码?我猜有什么东西正在将
e.Source
或e.OriginalSource
转换成滚动查看器不可用的东西。边框和拇指控件有代码用于调整大小,但没有使用e.Source
或e.OriginalSource
。拇指代码直接设置高度和宽度,边框使用DragMove()。除了一些隐藏和显示主内容UserControl的逻辑之外,几乎没有其他代码。您是否有可能在您的任何资源中定义了ScrollViewer样式?我看到了可能相关的链接:事实上,我看到了。有机会我会调查的。谢谢。@Rachel:那个链接并没有太多信息,但它确实为我指明了正确的方向。我从ScrollViewer中删除了所有样式,并逐个替换,直到我发现问题出在我的水平和垂直滚动条模板上——但不幸的是,我不确定是什么改变了它:(非常感谢。你有什么代码吗?比如用于调整大小的代码?我猜有什么东西正在将e.Source
或e.OriginalSource
转换为ScrollViewer不需要的东西。边框和Thumb控件有用于调整大小的代码,但没有使用e.Source
或e.OriginalSource
。Thumbs代码集高度
和宽度
边框直接使用DragMove()
。除了隐藏和显示主要内容UserControl的一些逻辑之外,几乎没有其他代码。您是否有可能在您的任何资源中定义了ScrollViewer样式?我看到了可能相关的链接:事实上,我看到了。我会在有机会的时候研究一下。谢谢。@Rachel:该链接没有太多信息,但它很有用我确实给我指出了正确的方向。我从ScrollViewer中删除了所有样式,并逐个替换,直到我发现问题出在水平和垂直滚动条模板上——但不幸的是,我不确定我更改了什么以使其正常工作:(非常感谢。Oops。这实际上是一个自定义控件,为了可读性,我将其更改为StackPanel,以便添加网格坐标。Oops。这实际上是一个自定义控件,为了可读性,我将其更改为StackPanel,以便添加网格坐标。在应用控件模板后,我对其进行了定义,并将其抛出。)s、 我很难弄明白,直到我看到这个并想检查。谢谢。我在应用控制模板后,有了它的定义,它抛出了这个,我很难弄明白,直到我看到这个并想检查。谢谢
<Window x:Class="MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="525" MinWidth="200"
Height="350" MinHeight="85"
FontFamily="Segoe UI"
AllowsTransparency="True" Background="Transparent"
ResizeMode="CanResize" WindowStyle="None">
<Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="6"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="6"/>
<RowDefinition Height="*"/>
<RowDefinition Height="6"/>
</Grid.RowDefinitions>
<Grid Grid.Column="1" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Orientation="Vertical">
<TextBlock Name="Caption" Text="My Window"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Vertical">
<!-- Minimize/Maximize/Close buttons -->
</StackPanel>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="160"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="24"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Column="0" Grid.Row="1">
<ItemsControl Name="TaskPane">
...
</ItemsControl>
</ScrollViewer>
<StackPanel Name="MainContent" Grid.Column="1" Grid.Row="1" Orientation="Vertical">
...
</StackPanel>
</Grid>
</Grid>
<ResizeGrip Name="ResizeGrip" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2" Foreground="Red" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="16" Height="16" Padding="0 0 18 18"/>
<Thumb Name="TopLeftThumb" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Opacity="0" Cursor="SizeNWSE" DragDelta="TopLeftThumb_DragDelta"/>
<Thumb Name="TopThumb" Grid.Column="1" Grid.Row="0" VerticalAlignment="Top" Opacity="0" Cursor="SizeNS" DragDelta="TopThumb_DragDelta" />
<Thumb Name="TopRightThumb" Grid.Column="2" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Opacity="0" Cursor="SizeNESW" DragDelta="TopRightThumb_DragDelta"/>
<Thumb Name="LeftThumb" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Opacity="0" Cursor="SizeWE" DragDelta="LeftThumb_DragDelta" />
<Thumb Name="RightThumb" Grid.Column="2" Grid.Row="1" HorizontalAlignment="Right" Opacity="0" Cursor="SizeWE" DragDelta="RightThumb_DragDelta" />
<Thumb Name="BottomLeftThumb" Grid.Column="0" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Opacity="0" Cursor="SizeNESW" DragDelta="BottomLeftThumb_DragDelta"/>
<Thumb Name="BottomThumb" Grid.Column="1" Grid.Row="2" VerticalAlignment="Bottom" Opacity="0" Cursor="SizeNS" DragDelta="BottomThumb_DragDelta" />
<Thumb Name="BottomRightThumb" Grid.Column="2" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Opacity="0" Cursor="SizeNWSE" DragDelta="BottomRightThumb_DragDelta"/>
</Grid>
</Border>