私は、別々のファイルで宣言されたUserControl StepPropが2回使用されるStepsWndウィンドウを持っています。xamlマークアップファイルからUserControlコンストラクタにパラメータを渡すにはどうすればよいですか?
<Window x:Class="MyProject.StepsWnd"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyProject"
Height="550" Width="850">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<local:StepProp Grid.Column="0" DataContext="{Binding Path=PrevStepVM}" x:Name="m_PrevStep"/>
<local:StepProp Grid.Column="1" DataContext="{Binding Path=CurStepVM}" x:Name="m_CurStep"/>
</Grid>
</Window>
StepsWndウィンドウが作成されると、StepPropコンストラクタが2回呼び出され - m_PrevStepためとm_CurStepのために。私は、コンストラクタを呼び出している人m_PrevStepまたはm_CurStepを識別することができるように私は、StepsWndウィンドウのマークアップからStepPropクラスのコンストラクタにパラメータを渡すことができますどのように
public class StepProp : UserControl
{
public StepProp()
{
InitializeComponent();
}
//...
}
?このようなことをするには?私は、コンストラクタを呼び出している人m_PrevStepまたはm_CurStepを識別することができるように私は、StepsWndウィンドウのマークアップからStepPropクラスのコンストラクタにパラメータを渡すことができますどのように
public class StepProp : UserControl
{
public StepProp(object parameter)
{
InitializeComponent();
if ((string)parameter == "PrevStep")
{
//todo somthing
}
else if ((string)Param == "CurStep")
{
//todo somthing else
}
}
//...
}
StepPropで依存関係プロパティを定義し、StepsWndで設定し、このプロパティ変更ハンドラでカスタマイズします。 –
要素をXAMLでタグとして作成すると、パラメータのないコンストラクタのみを呼び出すことができます。 swiszczの提案は、ユーザーコントロールを「パラメータ化する」従来の方法です。 –