如何自定义wp7工具包ToggleSwitch

时间:2010-10-22 01:16:12

标签: windows-phone-7

我有WP7工具包,正在使用切换开关。

此时它显示为开或关。

我知道您可以使用内容模板对其进行自定义,并且随附的示例代码显示了这一点,但是我无法找到一种开启/关闭其他方式的方法。

我想显示是和否。

4 个答案:

答案 0 :(得分:3)

我创建了自己的值转换器,它与我的视图模型上的相同布尔属性绑定为IsChecked。所以在视图上它看起来像:

<toolkit:ToggleSwtich IsChecked="{Binding Completed}" Content="{Binding Completed, Converter={StaticResource YesNoConverter}" />

答案 1 :(得分:2)

Hum因为“On”和“Off”字符串来自源代码中私有方法中的转换器集,我没有看到很多替代方法:http://silverlight.codeplex.com/SourceControl/changeset/view/55144#1325068

更改源代码以使其更灵活?

答案 2 :(得分:2)

有一种更简单的方法,将内容设置为否,然后为每个切换创建一个事件处理程序,使其显示是,然后是否:

private void ToggleSwitch_Checked(object sender, RoutedEventArgs e)
    {
        togButton.Content = "Yes";
    }

    private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e)
    {
        togButton.Content = "No";

    }

答案 3 :(得分:2)

我知道这个问题很老了,但我认为这个答案可能很有用,因为不需要重新编译控件的代码。

我们可以将Content绑定到IsChecked属性,并使用返回我们自定义字符串的Converter

这就是我为我的项目所做的:

<toolkit:ToggleSwitch SwitchForeground="{StaticResource PhoneAccentBrush}"
                      Grid.Row="3" Grid.Column="1" 
                      Header="{Binding Path=LocalizedResources.MyLabel, Source={StaticResource LocalizedStrings}}"
                      Content="{Binding IsChecked, Converter={StaticResource SwitchOnOffConverter}, RelativeSource={RelativeSource Self}}"/>

SwitchOnOffConverter就是这个:

public class SwitchOnOffConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {           
        return ((bool) value) ? AppResources.YesText : AppResources.NoText;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}