Silverlight - 将数据传递给用户控件的策略

时间:2012-12-19 17:12:31

标签: silverlight

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之间的数据绑定看起来也很好!

1 个答案:

答案 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}" />

没有使用记事本进行测试和抛出,但这是我要走的路径