3

ScatterView(scatterViewCoordinates)の可視性を変更する必要があるSurfaceRadioButtonがあります

まず、オブジェクトの可視性を変更することでした()

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

その後、XAMLコードを変更し、ScatterViewの名前をSurfaceRadioButtonのタグ値に含めました。

<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 に答える