我使用此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);
}
答案 0 :(得分:4)
你可以做到这两点。对于这两种方法,我建议你采用一种常用方法。
在AppSettings中创建一个Boolean属性,并在viewmodel中创建其包装器。
然后将视图模型中的包装器属性(双向)绑定到UI元素,该元素既可以是切换开关,也可以是图像。对于toggleswitch
,two way binding
本身就可以解决问题,但对于图像,您必须自己处理点击事件并自行处理代码中的开/关状态和布尔值。