2012-12-19 19 views
0

Silverlight5Silverlight的 - 战略将数据传递到用户控件

从一个按钮,点击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我实现了一个DependencyProperty在我Tab2_1Data控制:

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

既然你不想使用MVVM,尝试使用数据绑定..你将需要公开的参数作为一个依赖欢迎使用属性INT第一控制

下面是一些伪代码。在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}" /> 

那不是测试用记事本扔在一起,但那是我走下去的路径

+0

谢谢tsiorn!请参阅主要问题中的编辑以获取我实施的代码。 –

相关问题