1

我正在尝试在 Silverlight 5 中编写自己的自定义 TextBox 控件。

我已经成功编写了一个自定义标签控件,我可以在我的项目中重复使用它。

标签控件的 XAML 和代码如下所示。

以下代码我有用:

<sdk:Label 

x:Class="Gui.CustomControls.LabelControl"
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:sw="clr-namespace:System.Windows;assembly=System.Windows"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
mc:Ignorable="d"
d:DesignHeight="25" d:DesignWidth="125">

<Grid x:Name="LayoutRoot" Background="White">

</Grid>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Gui.CustomControls
{
    public partial class LabelControl : System.Windows.Controls.Label
    {
        public LabelControl()
        {
            InitializeComponent();

        }


    }
}

现在我想为 TextBox 做同样的事情 - 编写我自己的自定义 TextBox 控件。TextBox 的代码如下所示: 如您所见,它几乎是一样的

<sdk:TextBox 

    x:Class="Gui.CustomControls.TextBoxControl"
    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:sw="clr-namespace:System.Windows;assembly=System.Windows"
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
    mc:Ignorable="d"
    d:DesignHeight="25" d:DesignWidth="125">

    <Grid x:Name="LayoutRoot" Background="White">

    </Grid>
</sdk:TextBox>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Gui.CustomControls
{
    public partial class TextBoxControl : System.Windows.Controls.TextBox
    {
        public TextBoxControl()
        {
            InitializeComponent();

        }



    }
}

在构建解决方案时,会发生以下错误:

“XML 命名空间‘http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk’中不存在标签‘TextBox’”

由于文本框控件似乎存在于 System.Windows.Controls.TextBox 命名空间中,因此我在 XAML 中尝试了不同的命名空间,但没有任何效果。

我的问题是:

我必须使用哪个命名空间来构建这个自定义文本框?

如果这不是命名空间问题,我错过了什么?

谢谢你。

4

1 回答 1

1

不是sdk:TextBox,只是TextBox(即http://schemas.microsoft.com/winfx/2006/xaml/presentation,这是大多数 XAML 文件中的默认 xmlns)。虽然奇怪地没有记录在Silverlight TextBox类中,但它记录在.NET 4.5 TextBox类中。

于 2012-10-09T11:56:54.897 回答