すべてのドキュメントによると、ルックレスでないコントロールを作成するときは、 をサブクラス化することになっていますUserControl
。ただし、UserControl
の単純なサブクラスですContentControl
が、インターフェイスに関しては何も追加されていないようです。そのため、デザイナーが生成したコードを使用して基本クラスを変更しContentControl
ても、まったく同じように動作するように見えます。
UserControl
では、 overのポイントは何ContentControl
ですか?
アップデート:
Visual Studio では扱いが異なると答え続ける人には、そうではないと主張します。それを試してみてください!UserControl
Visual Studio で新規作成し、結果の XAML ファイルでルート タグを に変更しContentControl
ます。次に、関連付けられたクラス ファイルで、基本クラスを変更するContentControl
か、ここで行ったように単純に削除します (メモを参照)。完全な WYSIWYG デザイナー サポートを含め、まったく同じように動作するように見えます。
注: コード ビハインドから基本クラスを削除できます。これは、実際にはクラスの他の「部分」がコード生成によって XAML デザイナーによって作成される部分クラスであるためです。そのため、基本クラスは常に XAML ファイルのルート要素として定義されるため、コード ビハインドでは冗長であるため単純に省略できます。
更新された XAML は次のとおりです...
<ContentControl x:Class="Playground.ComboTest.InlineTextEditor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock Text="Success" />
</ContentControl>
...および関連するクラス ファイル...
namespace Playground.ComboTest {
public partial class InlineTextEditor {
public InlineTextEditor()
=> InitializeComponent();
}
}