さて、私はユーザーコントロール(ビュー)を継承するコントロールを持っており、ユーザーコントロール(ベースコントロール)を使用するときにそれを使用しています。
MessageBox.Show(this.GetType().ToString());
実行時と設計時に異なるメッセージを取得し、設計時にビューを取得し、実行時にビューを継承する xaml ファイルのクラス名を取得します...
基本クラスの代わりに、設計時に継承クラスの型を取得するにはどうすればよいですか?
ここにいくつかのコードがあります:
まず、ビュークラスがあります
public class View : UserControl
{
public override void OnApplyTemplate()
{
MessageBox.Show(this.GetType().ToString());
base.OnApplyTemplate();
}
}
次に、XAML ファイルがあります。
<local:View x:Class="WpfApplication2.Test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApplication2"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
</Grid>
</local:View>
VisualStudio 2010 で "WpfApplication2.Test" をコンパイルして開くと、"WpfApplication2.View" というメッセージ ボックスが表示されます。
しかし、Test コントロールを MainWindow に配置して Run(F5) を押すと、WpfApplication2.Test が得られます。私が望むのは、実行時と同じ応答をデザイン時にもることです...