在xaml Xamarin中的xaml.cs文件中引用外部stacklayout组件ID

时间:2015-07-13 06:40:34

标签: c# xaml xamarin

我正在从stackLayout组件中创建一个xaml文件。我打电话给这个TimerButton。

我有两个TimerButtons,想要区分它们。

//In MainPage.xaml   
<component:TimerButton x:Name="Smoke"></component:TimerButton>  
<component:TimerButton x:Name="Snuff"></component:TimerButton>

我需要发送ID,以便我可以在TimerButton组件内的C#代码(ViewModel.TobaccoType)中设置一个值。我试过使用x:arguments / name / type没有运气。

//In TimerButton.xaml.cs
ViewModel = new TimerButtonViewModel();

if (this.FindByName<TimerButton>("Smoke") != null)
{
     ViewModel.TobaccoType = "Smoke";
}

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作。给TimerButton一个所谓的DependencyProperty,如下所示:

public static readonly DependencyProperty TobaccoTypeProperty = 
    DependencyProperty.Register(
    "TobaccoType", typeof(String),
    typeof(TimerButton), null);

public String TobaccoType
{
   get { return (String)GetValue(TobaccoTypeProperty); }
   set { SetValue(TobaccoTypeProperty, value); }
}

然后你在你的XAML中引用它:

//In MainPage.xaml   
<component:TimerButton x:Name="Smoke" TobaccoType="Smoke"></component:TimerButton>  
<component:TimerButton x:Name="Snuff" TobaccoType="Snuff"></component:TimerButton>

您可以在TimerButton.cs中轻松引用此属性