在控制器之间传递单选按钮值

时间:2016-12-13 07:45:21

标签: c# xaml silverlight

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

  

信息中心 - > DashboardBlock.xaml

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

<stackpanel>
    <RadioButton x:Name="test" Content="Checkbox" />
</StackPanel>

现在,当选中此复选框(True或False)时,我希望发生以下情况:

控制器:

  

SiteStatus - &gt; SiteStatusControl.xaml

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

我知道怎么做,如果它在同一个控制器中。但是,正如您所看到的,这些是在单独的控制器中。我不知道如何在彼此之间传递值。

编辑:

这就是页面的样子:

How the page looks like

编辑2:

这是控制器的外观:

How the controller looks

1 个答案:

答案 0 :(得分: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>

FilterEnum

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); 
    }
}

在SiteStatusControl中

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;           
    }
}

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