在控制器之间传递单选按钮值
Pass radio button value between controller
在我的控制器部分,我有以下文件和以下代码。
Dashboard -> DashboardBlock.xaml
在这里我有一个这样的复选框:
<stackpanel>
<RadioButton x:Name="test" Content="Checkbox" />
</StackPanel>
现在,当这个复选框被选中(是或否)时,我希望发生以下情况:
控制器:
SiteStatus -> SiteStatusControl.xaml
private void GetSiteStatus()
{
if (checkbox == true)
{
//Do something
}
}
如果它在同一个控制器中,我知道该怎么做。然而,正如您所看到的,它们位于不同的控制器中。而且我不知道如何在彼此之间传递值。
编辑:
页面是这样的:
编辑 2:
控制器的外观如下:
如果您从仪表板调用“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);
}
}
在 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;
}
}
这不是最干净的东西,但我认为它会让您了解如何做到这一点。
在我的控制器部分,我有以下文件和以下代码。
Dashboard -> DashboardBlock.xaml
在这里我有一个这样的复选框:
<stackpanel>
<RadioButton x:Name="test" Content="Checkbox" />
</StackPanel>
现在,当这个复选框被选中(是或否)时,我希望发生以下情况:
控制器:
SiteStatus -> SiteStatusControl.xaml
private void GetSiteStatus()
{
if (checkbox == true)
{
//Do something
}
}
如果它在同一个控制器中,我知道该怎么做。然而,正如您所看到的,它们位于不同的控制器中。而且我不知道如何在彼此之间传递值。
编辑:
页面是这样的:
编辑 2:
控制器的外观如下:
如果您从仪表板调用“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);
}
}
在 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;
}
}
这不是最干净的东西,但我认为它会让您了解如何做到这一点。