我有一個StepsWnd窗口,其中UserControl StepProp被使用兩次,在一個單獨的文件中聲明。如何將參數從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構造函數被調用兩次 - 爲m_PrevStep和m_CurStep。
public class StepProp : UserControl
{
public StepProp()
{
InitializeComponent();
}
//...
}
如何傳遞的參數,從StepsWnd窗口標記的StepProp類的構造函數,這樣我可以確認誰在調用構造函數,m_PrevStep或m_CurStep?爲了得到這樣的東西?
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的建議是「參數化」用戶控制的傳統方式。 –