0

Silverlight5

从按钮单击 Tab1Data 我想将参数传递给 Tab2_1Data

我目前正在使用 MainPage 上的全局公共属性(!)进行此操作,每个 UserControl 都可以使用此帮助器引用该属性

有没有更好的方法使用非 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>

编辑:使用这个我在我的 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";

现在这对我来说很好......虽然两者之间的数据绑定看起来也很好!

4

1 回答 1

0

由于您不想使用 MVVM,请尝试使用数据绑定。您需要将参数公开为第一个控件的依赖属性

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

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

于 2012-12-19T20:09:26.230 回答