WP7 - 使用图标打开/关闭声音

时间:2012-12-25 13:40:28

标签: c# silverlight windows-phone-7 settings toggle

我使用此msdn articles中的应用设置为声音创建了布尔变量。现在我希望它在我的菜单中toggleswitch可以打开或关闭音量。我正在考虑使用像this answer这样的东西。但我不确定这对我的问题是否有益。我应该为我的AppSettings添加图像变量,还是有更好的方法呢?

我的解决方案:

在xaml:

<ToggleButton Name="tgbSound" BorderThickness="0" Background="Transparent"
                      Checked="tgbSound_Checked"
                      Unchecked="tgbSound_Unchecked"
                      IsChecked="{Binding Source={StaticResource appSettings}, Path=SoundSetting, Mode=TwoWay}">
        </ToggleButton>

在xaml页面的代码中:

private void tgbSound_Checked(object sender, RoutedEventArgs e)
{
    SetTgbSoundContentTo("Images/volumeon.png");
}

private void tgbSound_Unchecked(object sender, RoutedEventArgs e)
{
    SetTgbSoundContentTo("Images/volumeoff.png");
}

private void SetTgbSoundContentTo(string uri)
{
    Image volumeoff = new Image();
    ImageSource zdroj = new BitmapImage(new Uri(uri, UriKind.Relative));
    volumeoff.Source = zdroj;
    volumeoff.Height = 40;
    if (tgbSound == null)
        return;
    tgbSound.Content = volumeoff;
    tgbSound.Background = new SolidColorBrush(Colors.Transparent);
}

1 个答案:

答案 0 :(得分:4)

你可以做到这两点。对于这两种方法,我建议你采用一种常用方法。

在AppSettings中创建一个Boolean属性,并在viewmodel中创建其包装器。 然后将视图模型中的包装器属性(双向)绑定到UI元素,该元素既可以是切换开关,也可以是图像。对于toggleswitchtwo way binding本身就可以解决问题,但对于图像,您必须自己处理点击事件并自行处理代码中的开/关状态和布尔值。