Silverlight5
从按钮上单击Tab1Data我想将参数传递给Tab2_1Data
我目前在MainPage上使用全局公共属性(!),每个UserControl可以使用此helper
引用它使用非MVVM方法传递参数是否有更好的方法?
<controls:TabControl Name="TabOverallMain">
<!-- Tab 1 -->
<controls:TabItem Header="Home Screen" IsSelected="True">
<UserControls:Tab1Data />
</controls:TabItem>
<!-- Tab 2 -->
<controls:TabItem Header="Admin">
<Grid>
<controls:TabControl>
<!-- Tab 2_1 -->
<controls:TabItem Header="Users">
<UserControls:Tab2_1Data />
</controls:TabItem>
编辑: 使用this我在Tab2_1Data控件中实现了DependencyProperty:
public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(WidgetControl),null);
public string Caption
{
get { return (string)GetValue(CaptionProperty); }
set { SetValue(CaptionProperty, value); }
}
然后我从我的Tab1Data用户控件引用:
wid.Caption = "hello world";
现在这对我来说很好..虽然2之间的数据绑定看起来也很好!
答案 0 :(得分:0)
由于您不想使用MVVM,请尝试使用数据绑定。您需要在第一个控件中将参数公开为依赖性propety
这里有一些伪代码。在Tab1Data上创建一个名为MyParam
的依赖项属性 public static readonly DependencyProperty MyParamProperty = DependencyProperty.Register("MyParam",
int, typeof(Tab2_1Data), null);
public int MyParam
{
get { return (int)GetValue(MyParamProperty); }
set
{
SetValue(MyParamProperty, value);
}
}
<controls:TabItem Header="Home Screen" IsSelected="True">
<UserControls:Tab1Data x:Name="OneCtrl" />
</controls:TabItem>
然后在第二个控件上创建一个依赖属性(类似于上面),称为ParamFromControlOne ...然后绑定它们
<UserControls:Tab2_1Data ParamFromControlOne="{Binding MyParam, ElementName=OneCtrl}" />
没有使用记事本进行测试和抛出,但这是我要走的路径