2017-04-16 15 views
1

私はSilverlightアプリケーションをUWP Windows 10アプリケーションに移植しています。UWPはUserControlから継承したクラスから継承します

大部分は、UserControlから継承したクラスから継承されたコントロールを持っています。

base: 
public abstract class PartBase : UserControl, IPart, IDisposable 

concrete: 
public sealed partial class MyPart : PartBase 

its XAML: 
<local:PartBase 

私はコンパイルエラーを取得:名前 "PartBaseは" 名前空間に存在しません。..

はUWPで許可の継承ですか?

+1

SOの話題はなんですか?いいねあなたは何歳ですか? –

+0

MyPartのXAMLで 'local'という名前空間をどのように定義しますか? –

+0

localは、PartBaseが定義されている名前空間を表します。だからすべてうまいです。 @バートの答えに私のコメントを参照してください - それはおそらくVS 2017のバグです。それはテストアプリケーションでは動作しますが、 "メイン"アプリケーションでは動作しません。 –

答えて

2

あなたのコードはうまくいくはずです。抽象基底クラスと、そのクラスに基づいた新しいコントロールを作成しました。 xmlns:local="using:UWPTest.Controls"は、名前空間PartBaseで正しいことを

<local:PartBase 
    x:Class="UWPTest.Controls.MyUserControl1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:UWPTest.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="400"> 

    <Grid> 
     <Button>Test</Button> 
    </Grid> 
</local:PartBase> 

ダブルチェックがで宣言されている。そして、あなたのソリューションとエラーが離れて行く必要があります再構築(リビルドしていない場合は、エラーが表示されます)。

<Page 
    x:Class="UWPTest.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:controls="using:UWPTest.Controls" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <controls:MyUserControl1 /> 
    </Grid> 
</Page> 

xmlns:controls正しい名前空間を指す:ページ(例えばメインページ)私は単にコントロールを使用することができるで

。デザイナーは、あなたがアプリケーションを再構築するまでエラーを返すでしょう。

すべてがここに構築され、アプリケーションが実行されるので、名前空間の宣言をすべてダブルチェックしてもエラーが発生した場合は、オンラインでreproを実行する必要があります。

+0

はいそれはVS2017のバグのように見えます。私はテストプロジェクトでは、私のアプリケーションではないと思っていることをすることができます。しかし、私は基本クラスの定義から "抽象"を削除します.. –

+0

あなたが前進することができる良いニュース。マイクロソフトで調べることができるように、迅速なバグレポートを投稿することを忘れないでください。 – Bart

+0

残念ながら、私はそれが実際のアプリケーションではなくサンプルアプリケーションで動作するのかどうかわかりません.Msは再現したいと考えています。 –

関連する問題