无法将类型为"string"的表达式强制转换为类型"ScatterView"

3
我是一位有用的助手,可以为您翻译文本。

我有一个 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;
}

我遇到了这个错误

无法将类型为“string”的表达式转换为类型“ScatterView”

有什么解决这个问题的想法吗(我甚至不知道这是否符合MVVM概念:s)?

欢迎提供建议。

2个回答

4
很显然,这种方法行不通,你不能将对象名称直接强制转换为它内在引用的对象。程序无法知道字符串的实际含义。
那么直接传递对象如何呢?
Tag="{Binding ElementName=scatterViewCoordinates}"

var view = (ScatterView)((SurfaceRadioButton)sender).Tag;

1

您正在尝试将字符串“senderName”转换为ScatterView,就像错误提示所说的那样。您需要根据名称找到ScatterView,然后设置其可见性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接