Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 放置此ScrollViewer会引发错误_Wpf_Scrollviewer - Fatal编程技术网

Wpf 放置此ScrollViewer会引发错误

Wpf 放置此ScrollViewer会引发错误,wpf,scrollviewer,Wpf,Scrollviewer,我有一个WPF窗口,它有一个自定义边框、用于调整大小的拇指控件和两列布局。右边的列(主要内容区域)是一个带有ScrollViewer的用户控件,因此它可以根据需要滚动。我想在左列添加一个ScrollViewer,但当我添加时,在运行时它会给我 “System.Windows.Controls.Primitives.ScrollBar”的初始化引发异常 除了 无法将类型为“MS.Internal.NamedObject”的对象强制转换为类型为“System.Windows.FrameworkTem

我有一个WPF窗口,它有一个自定义边框、用于调整大小的拇指控件和两列布局。右边的列(主要内容区域)是一个带有ScrollViewer的用户控件,因此它可以根据需要滚动。我想在左列添加一个ScrollViewer,但当我添加时,在运行时它会给我

“System.Windows.Controls.Primitives.ScrollBar”的初始化引发异常

除了

无法将类型为“MS.Internal.NamedObject”的对象强制转换为类型为“System.Windows.FrameworkTemplate”

如果我拿出ScrollViewer,一切都会恢复正常

以下是基本的XAML(ScrollViewer环绕在TaskPane ItemsControl中):


...
...


我在网上搜索过,但能找到这方面的任何东西。我尝试使用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>