【问题标题】:Pass radio button value between controller在控制器之间传递单选按钮值
【发布时间】:2017-04-28 04:57:47
【问题描述】:

在我的控制器部分,我有以下带有以下代码的文件。

仪表板 -> DashboardBlock.xaml

在这里我有一个这样的复选框:

<stackpanel>
    <RadioButton x:Name="test" Content="Checkbox" />
</StackPanel>
现在,检查此复选框时(如true或false),我希望以下发生以下情况:

控制器:

SiteStatus -> SiteStatusControl.xaml

private void GetSiteStatus()
{
    if (checkbox == true) 
    {
        //Do something
    }
}

如果它在同一个控制器中,我知道该怎么做。但是,如您所见,它们位于单独的控制器中。而且我不知道如何在彼此之间传递值。

编辑:

页面是这样的:

编辑 2:

这是控制器的外观:

【问题讨论】:

    标签: c# xaml silverlight


    【解决方案1】:

    如果您从仪表板调用“GetSiteStatus()”,只需将“checkbox.Checked”作为参数传递。 'GetSiteStatus(checkbox.Checked)'

    private void GetSiteStatus(bool checked)
    {
        if (checked == true) 
        {
            //Do something
        }
    }
    

    编辑:

    如果我理解你的话。

    在 DashboardBlock.xaml 中

    <StackPanel>
        <RadioButton x:Name="filter1" Content="Filter 1 Checkbox"
                     CheckedChanged="FilterSelectionChanged"/> 
        <RadioButton x:Name="filter2" Content="Filter 2 Checkbox"
                     CheckedChanged="FilterSelectionChanged"/> 
        <RadioButton x:Name="filter3" Content="Filter 1 Checkbox"
                     CheckedChanged="FilterSelectionChanged"/> 
    </StackPanel>
    

    过滤器枚举

    public enum Filter{ Filter1, Filter2, Filter3 }
    

    仪表板

    public void FilterSelectionChanged(object sender, EventArgs e)
    {
        var radioButton = (RadioButton)sender;
        if(radioButton.Name == "filter1")
        {
            siteStatusControl.UpdateFilter(Filter.Filter1);
        } else if (radioButton.Name == "filter2")
        {
            siteStatusController.UpdateFilter(Filter.Filter2); 
        }else if (radioButton.Name == "filter3")
        {
            siteStatusControl.UpdateFilter(Filter.Filter3); 
        }
    }
    

    在站点状态控件中

    public void UpdateFilter(Filter filter)
    {
        switch(filter)
        {
            case Filter.Filter1:
                //Do Something
                break;
            case Filter.Filter2:
                //Do Something
                break;
            case Filter.Filter3:
                //Do Something
                break;           
        }
    }
    

    这不是最干净的东西,但我认为它会告诉你如何做到这一点。

    【讨论】:

    • 刚刚进行了编辑。这就是页面现在的样子。当我检查仪表板控制器上的复选框时。我希望 SiteStatus 控制器进行调整。
    • 请添加一些信息。您是在谈论订阅 RadioButton 更改时触发的事件吗?或者,如果组中的 RadioButton 选择发生了变化?还是您正在积极调用“GetSiteStatus”?
    • 在 SiteStatus 控制器中,我使用 GetSiteStatus 类从我的数据库中获取结果。现在,我想过滤用户输入的结果。因此,如果用户检查仪表板控制器中的单选按钮,我希望 GetSiteStatus 看看它是否被选中。
    • 这对我来说很有意义,是的 :) 但是,我是 C# 的新手,仍然没有得到一些东西。我所做的是在我的仪表板以及公共空白中添加过滤器枚举。然后,如果我将另一个私有 void 添加到我的 Sitestatus 控件,并得到以下错误:在我的 SiteStatusControl 中,我还需要添加 Enum 过滤器,否则它会给我错误 Unknow Filter.X +1 顺便说一下!
    • 'UpdateFilter' 需要公开,Filter Enum 需要在 Dashboard 类之外。
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 2016-02-11
    • 2017-11-30
    • 2019-03-24
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多