我有一个 SurfaceRadioButton 必须改变 ScatterView Visibility (scatterViewCoordinates)

首先,我所做的是改变对象的Visibility ()

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)?

也欢迎提出建议。

最佳答案

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

只传递对象怎么样:

Tag="{Binding ElementName=scatterViewCoordinates}"
var view = (ScatterView)((SurfaceRadioButton)sender).Tag;

关于c# - 无法将 'string' 类型的表达式转换为 'ScatterView' 类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11470045/

10-12 01:56