3

我有一个SurfaceRadioButton必须更改 ScatterView 的可见(scatterViewCoordinates)

首先,我所做的是改变对象的可见性()

private void CoordinatesChecked(object sender, RoutedEventArgs e)
{
    scatterViewCoordinates.Visibility = Visibility.Visible;
}

之后我修改了 XAML 代码,并将 ScatterView 的名称包含在 SurfaceRadioButton 的 Tag 值中。

<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 概念:s)?

也欢迎提出建议。

4

2 回答 2

4

为什么这不起作用应该很明显,您不能只将对象的名称转换为它固有引用的对象。程序无法知道字符串的含义

只是传递对象怎么样:

Tag="{Binding ElementName=scatterViewCoordinates}"
var view = (ScatterView)((SurfaceRadioButton)sender).Tag;
于 2012-07-13T12:01:31.760 回答
1

您正在尝试将“senderName”(一个字符串)转换为 ScatterView,就像错误所说的那样。您将需要根据名称查找 ScatterView 并设置其可见性。

于 2012-07-13T12:02:03.360 回答