在我的控制器部分,我有以下代码的文件。
信息中心 - > DashboardBlock.xaml
在这里我有一个像这样的复选框:
<stackpanel>
<RadioButton x:Name="test" Content="Checkbox" />
</StackPanel>
现在,当选中此复选框(True或False)时,我希望发生以下情况:
控制器:
SiteStatus - &gt; SiteStatusControl.xaml
private void GetSiteStatus()
{
if (checkbox == true)
{
//Do something
}
}
我知道怎么做,如果它在同一个控制器中。但是,正如您所看到的,这些是在单独的控制器中。我不知道如何在彼此之间传递值。
编辑:
这就是页面的样子:
编辑2:
这是控制器的外观:
答案 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;
}
}
这不是最干净的东西,但我认为它会让你知道如何做到这一点。