将WPF XAML代码移植到Silverlight XAML代码

时间:2014-02-14 18:02:34

标签: c# wpf silverlight xaml

我有一些WPF XAML代码,当我尝试使Silverlight等效时,我遇到了一些重大问题。现在,在任何人开始咆哮这两个人是如何不交叉兼容之前,我已经知道了。我需要创建一个与我现在的代码具有相似外观的Silverlight应用程序。我能够将所有的C#类转换为但是XAML代码很痛苦。这是WPF的XAML代码,我遇到了问题:

<ControlTemplate x:Key="DesignerItemTemplate" TargetType="ContentControl">
  <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
    <s:MoveThumb Template="{StaticResource MoveThumbTemplate}" Cursor="SizeAll"/>
    <ContentPresenter Content="{TemplateBinding ContentControl.Content}"/>
  </Grid>
</ControlTemplate>

问题是我在s:下看不到MoveThumb,这是我项目的命名空间(MoveThumb是一个C#类)。任何建议都将不胜感激。

修改 以下是Silverlight项目的所有代码。要意识到我没有完成这个过渡,我不一定在代码的其他部分寻求其他问题的帮助;只是这一部分(设计师项目模板下的部分。

<UserControl x:Class="SilverlightFlowConnectors.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:s="clr-namespace:SilverlightFlowConnectors"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">

<UserControl.Resources>
    <!-- MoveThumb Template -->
    <ControlTemplate x:Key="MoveThumbTemplate" TargetType="s:MoveThumb">
        <Rectangle Fill="Transparent"/>
    </ControlTemplate>

    <!-- Designer Item Template-->
    <ControlTemplate x:Key="DesignerItemTemplate" TargetType="ContentControl">
        <Grid DataContext="{StaticResource MoveThumbTemplate}">

        </Grid>
    </ControlTemplate>
</UserControl.Resources>

<Canvas>
    <ContentControl Width="130"
                MinWidth="50"
                Height="130"
                MinHeight="50"
                Canvas.Top="150"
                Canvas.Left="470">
        <Ellipse Fill="Red"
           IsHitTestVisible="False"/>
    </ContentControl>
    <ContentControl Width="130"
                MinWidth="50"
                Height="130"
                MinHeight="50"
                Canvas.Top="150"
                Canvas.Left="150">
        <Path Fill="Blue"
        Data="M 0,5 5,0 10,5 5,10 Z"
        Stretch="Fill"
        IsHitTestVisible="False"/>
    </ContentControl>
    <ContentControl Width="130"
        MinWidth="50"
        Height="130"
        MinHeight="50"
        Canvas.Top="150"
        Canvas.Left="150"
        Template="{StaticResource DesignerItemTemplate}">
        <Path Fill="Blue"
            Data="M 0,5 5,0 10,5 5,10 Z"
            Stretch="Fill"
            IsHitTestVisible="False"/>
    </ContentControl>
</Canvas>

1 个答案:

答案 0 :(得分:0)

您需要创建指定命名空间短字符串s,其目标是您当前拥有MoveThumb的位置,或修复您移植的列表。如果没别的话,只需用智能感知帮助重做s