【问题标题】:Silverlight - Strategy passing Data to a User ControlSilverlight - 将数据传递给用户控件的策略
【发布时间】:2012-12-19 17:12:30
【问题描述】:

银光5

从按钮单击 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";

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

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    由于您不想使用 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}" />
    

    这不是使用记事本测试和组合在一起的,但这是我要走的路

    【讨论】:

    • 谢谢 tsiorn!有关我实现的代码,请参阅主要问题中的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2011-02-12
    相关资源
    最近更新 更多