私はパラメータとして渡す他のクラスの同じインスタンスを必要とする多くのクラスを持っているので、私はコードにいくつかの継承を実装しようとしましたが、今はなぜ私は非常に理解していない再帰問題が発生します。継承再帰
これはParentScreenクラス(通常のクラス、XAMLではありません)で破損しています。これは私の単純な問題を解決する最良の方法ではないでしょうか?私が思う
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ParentScreen ps = new ParentScreen();
container.Children.Add(ps.ms);
}
}
public class ParentScreen : UserControl
{
public MainScreen ms;
public ParentScreen()
{
ms = new MainScreen(); // breaks here
}
}
public partial class MainScreen : ParentScreen
{
public MainScreen()
{
InitializeComponent();
}
}
<runtime:ParentScreen x:Class="WpfApplication1.MainScreen"
xmlns:runtime="clr-namespace:WpfApplication1"
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"
Height="100" Width="200">
<Grid>
<TextBox Height="23" Margin="12,12,0,0" Name="textBox1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" />
</Grid>
</runtime:ParentScreen>
parentScreenオブジェクトを作成するとき、コードはmainScreenオブジェクトを作成するコンストラクタを呼び出します。 MainScreenオブジェクトはParentScreenから継承するので、新しいparentScreenオブジェクトを作成するだけで、parentScreenコンストラクタをもう一度呼び出すことができます。 - > StackoverflowExcepetion ?! –
ああそう、私は...おっと!それを指摘してくれてありがとう! – Michael
解決策(と問題)をちょっと言い直す必要があります。e。これは、WPFユーザーコントロールでの再利用を処理する最も幸せな方法ではなく、何らかの理由で問題に終わることになります。これは単なる明白なバグでした:)しかし、あなたはより困難に遭遇する可能性があります。継承は、GUI/WPFコンポーネント、および最高の匂いがないWPFの場合には最良の選択ではありません。 WPFの周りでは、MVVMを介して物事を試して実装することをお勧めします。さまざまなコントロール用のデータテンプレート - 最後の手段としてのみカスタムコーディングコントロールに頼っています - それはあなたを助け、あなたに向かってベストを導きます – NSGaga