2012-12-19 29 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!請參閱主要問題中的編輯以獲取我實施的代碼。 –

相關問題