簡體   English   中英

Silverlight 2:Silverlight 2中的XamlParseException

[英]Silverlight 2: XamlParseException in Silverlight 2

我在Silverlight 2中出現以下問題; 在Silverlight 3中,相同的代碼可以正常工作。

XAML代碼如下:

<UserControl x:Class="My_Discussions.ThreadListItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:discussion="clr-namespace:My_Discussions"
Width="Auto" Height="Auto">       

<UserControl.Resources>

    <ControlTemplate x:Key="TopicItem">
        <Grid x:Name="TopicItemHost" ShowGridLines="False" Margin="0,8" VerticalAlignment="Stretch">
            <vsm:VisualStateManager.VisualStateGroups>
                <vsm:VisualStateGroup x:Name="CommonStates">
                    <vsm:VisualState x:Name="Normal" />
                    <vsm:VisualState x:Name="MouseOver">
                        <Storyboard>
                            <DoubleAnimation 
                                    Storyboard.TargetName="hotRect" 
                                    Storyboard.TargetProperty="Opacity"
                                    Duration="0"
                                    To="1" />
                            <ObjectAnimationUsingKeyFrames 
                                Storyboard.TargetName="TopicItemHost" 
                                Storyboard.TargetProperty="Cursor" 
                                Duration="0">
                                <DiscreteObjectKeyFrame KeyTime="0">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Cursors>Hand</Cursors>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </vsm:VisualState>
                </vsm:VisualStateGroup>
                <vsm:VisualStateGroup x:Name="FocusStates">
                    <vsm:VisualState x:Name="Unfocused" />
                    <vsm:VisualState x:Name="Focused">
                        <Storyboard>
                            <DoubleAnimation 
                                    Storyboard.TargetName="focusRect" 
                                    Storyboard.TargetProperty="Opacity"
                                    Duration="0"
                                    To="1" />
                        </Storyboard>
                    </vsm:VisualState>
                </vsm:VisualStateGroup>
                <vsm:VisualStateGroup x:Name="ReadUnreadStates">
                    <vsm:VisualState x:Name="Read" />
                    <vsm:VisualState x:Name="Unread">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames 
                                Storyboard.TargetName="TopicTitle" 
                                Storyboard.TargetProperty="FontWeight" 
                                Duration="0">
                                <DiscreteObjectKeyFrame KeyTime="0">
                                    <DiscreteObjectKeyFrame.Value>
                                        <FontWeight>Bold</FontWeight>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </vsm:VisualState>
                </vsm:VisualStateGroup>
            </vsm:VisualStateManager.VisualStateGroups>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" MinWidth="10"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Rectangle x:Name="focusRect" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="2" Fill="#F0F0F0" Margin="0,-8"  Opacity="0"/>
            <Rectangle x:Name="hotRect" Grid.Column="1" Height="1" Margin="0,0,0,0" VerticalAlignment="Bottom" Opacity="0"
                       >
                <Rectangle.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                        <GradientStop Color="#4080C0" Offset="0" />
                        <GradientStop Color="Gray" Offset="0.5" />
                        <GradientStop Color="White" Offset="1" />
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>

            <Image x:Name="TopicLock" Grid.Column="0" Visibility="Collapsed" 
                   Stretch="None" Source="Images/locked.png" Margin="10,2,10,0" 
                   VerticalAlignment="Top" />

            <discussion:ThreadListItemTitleHost Grid.Column="1" 
                                                HorizontalAlignment="Left"
                                                VerticalAlignment="Stretch">
                <discussion:TextCut x:Name="TopicTitle" 
                                    Padding="0,0" 
                                    Foreground="#4080C0" 
                                    HorizontalAlignment="Left"
                                    VerticalAlignment="Top"/>

                <discussion:TextCut x:Name="TopicBody"  
                                    Padding="4,0" 
                                    VerticalAlignment="Top"
                                    HorizontalAlignment="Left"
                                    Foreground="Gray"/>
            </discussion:ThreadListItemTitleHost>

        </Grid>
    </ControlTemplate>

    <ControlTemplate x:Key="ProjectItem">
        <TextBlock x:Name="Project" Padding="10,8" VerticalAlignment="Top" TextWrapping="Wrap"/>
    </ControlTemplate>

    <ControlTemplate x:Key="MessagesItem">
        <TextBlock x:Name="Messages" Padding="10,8" VerticalAlignment="Top"/>
    </ControlTemplate>

    <ControlTemplate x:Key="AuthorItem">
        <discussion:TextCut x:Name="Author" Padding="10,8" VerticalAlignment="Top" HorizontalAlignment="Stretch"/>
    </ControlTemplate>

    <ControlTemplate x:Key="DateItem">
        <TextBlock x:Name="Date" Padding="10,8" VerticalAlignment="Top" />
    </ControlTemplate>

    <ControlTemplate x:Key="BottomBorder">
        <Rectangle Width="Auto" Height="0.5" VerticalAlignment="Bottom" Stroke="Gray" StrokeThickness="0.5" />
    </ControlTemplate>

</UserControl.Resources>

因此,XAML中有一個名為“ TopicTitle”的控件。 實現控件的TextCut類包含屬性“ FontWeight”:

public static readonly DependencyProperty FontWeightProperty = DependencyProperty.RegisterAttached(
        "FontWeight", 
        typeof(FontWeight), 
        typeof(TextCut),
        new PropertyMetadata(new PropertyChangedCallback(OnFontWeightPropertyChanged)));

然后,我調用“ VisualStateManager.GoToState(ctrl,“未讀”,false)“。 該調用應將值Bold設置為控件“ TopicTitle”的屬性“ FontWeight”。

在Silverlight 2.0上,發生以下異常:

XamlParseException:LineNumber:0 LinePosition:0消息:“ [Line:0 Position:0]”調用堆棧為:MS.Internal.XcpImports.CheckHResult(UInt32 hr),位於MS.Internal.XcpImports.Storyboard_SeekAlignedToLastTick(Storyboard故事板,單個seekTime) )位於System.Windows.VisualStateGroup.StartNewThenStopOld(FrameworkElement元素,Storyboard [] newStoryboards)位於System.Windows.VisualStateManager.GoToStateInternal(控制控件,FrameworkElement元素,VisualStateGroup位於System.Windows.VisualStateGroup.StartNewThenStopOld(TimeSpan偏移) System.Windows.VisualStateManager.GoToState處的組,VisualState狀態,布爾useTransitions)(控制控件,字符串stateName,布爾useTransitions)

正如我所說,在Silverlight 3.0上沒有問題。 問題是:在Silverlight 2.0上會發生什么,如何避免這種情況? 什么是[[Line:0 Position:0]]-它對我無濟於事。

好吧,我對Silverlight 2的了解還很生銹,但是看着調用堆棧,我會說它對此感到不高興:-

<FontWeight>Bold</FontWeight>

我敢肯定,您一定有充分的理由堅持使用SL2,但我不禁指出,使用SL3可能是解決之道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM