我有一个SurfaceRadioButton,必须更改ScatterView的可见性(scatterViewCoordinates)
首先,我所做的是改变对象的可见性()
private void CoordinatesChecked(object sender, RoutedEventArgs e)
{
scatterViewCoordinates.Visibility = Visibility.Visible;
}
之后我修改了XAML代码,并在SurfaceRadioButton的Tag值中包含了ScatterView的名称。
<s:SurfaceRadioButton Name="Coordinates" Content="Coordinates"
Checked="CoordinatesChecked" Tag="scatterViewCoordinates" />
现在我试图将SurfaceRadioButton中包含的Tag值转换为ScatterView,然后调用Visibility方法。
private void CoordinatesChecked(object sender, RoutedEventArgs e)
{
string senderName = ((SurfaceRadioButton)sender).Tag.ToString();
((ScatterView)senderName).Visibility = Visibility.Hidden;
}
我收到此错误
Cannot cast expression of type 'string' to type 'ScatterView'
解决这个问题的任何想法(如果尊重MVVM概念,我现在都不知道了吗?)
也欢迎提出建议。
答案 0 :(得分:4)
很明显为什么这不起作用,你不能只是将对象的名称强制转换为它本身引用的对象。程序无法知道字符串的含义。
如何传递对象:
Tag="{Binding ElementName=scatterViewCoordinates}"
var view = (ScatterView)((SurfaceRadioButton)sender).Tag;
答案 1 :(得分:1)
您正尝试将“senderName”(这是一个字符串)强制转换为ScatterView,就像错误所说的那样。您需要根据名称查找ScatterView,然后设置其可见性。