代码之家  ›  专栏  ›  技术社区  ›  Steve Chadbourne

如何自定义WP7工具包切换开关

  •  5
  • Steve Chadbourne  · 技术社区  · 15 年前

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

    此时它显示开或关。

    我知道你可以使用Tookit提供的内容模板和示例代码来定制它,但我找不到一种方法可以让Changine打开/关闭其他功能。

    我想显示是和否。

    4 回复  |  直到 12 年前
        1
  •  2
  •   MatthieuGD    15 年前

    hum因为“on”et“off”字符串来自源代码中私有方法中的转换器集,所以我看不到很多替代方法: http://silverlight.codeplex.com/SourceControl/changeset/view/55144#1325068

    更改源代码使其更灵活?

        2
  •  3
  •   Nigel Sampson    14 年前

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

    <toolkit:ToggleSwtich IsChecked="{Binding Completed}" Content="{Binding Completed, Converter={StaticResource YesNoConverter}" />
    
        3
  •  2
  •   Christian Specht    14 年前

    有一种更简单的方法,将内容设置为“否”,然后为每个切换创建一个事件处理程序,使其依次为“是”和“否”。

    private void ToggleSwitch_Checked(object sender, RoutedEventArgs e)
        {
            togButton.Content = "Yes";
        }
    
        private void ToggleSwitch_Unchecked(object sender, RoutedEventArgs e)
        {
            togButton.Content = "No";
    
        }
    
        4
  •  2
  •   StepTNT    12 年前

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

    我们可以约束 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();
        }
    }
    
    推荐文章