【问题标题】:Xamarin Forms Switch text in UWPUWP 中的 Xamarin 表单切换文本
【发布时间】:2016-09-13 13:33:11
【问题描述】:

就像遇到 here 的其他人一样,我希望更改Switch 控件旁边的文本,这似乎只能用于Android 的ootb。不同之处在于我希望在 中更改控件的文本(自从上一个人问他/她的问题以来已经过去了一年多)。

是否有人对此有(相对简单的)解决方案,或者this answer 仍然是最好的解决方案?

【问题讨论】:

    标签: windows-phone xamarin-forms uwp c# xamarin.forms uwp


    【解决方案1】:

    有没有人对此有(相对简单的)解决方案

    查看Xamarin.forms Switch源码,对于WinRT平台,Switch控件的样式其实是遵循Windows.UI.Xaml.Controls.ToggleSwitch的样式。

    所以我们可以根据我们的要求创建修改默认模板。

    对于默认的ToggleSwitch样式和模板,请参见here

    请注意这部分:

    <ContentPresenter x:Name="OffContentPresenter"
                            Grid.Row="1"
                            Grid.RowSpan="3"
                            Grid.Column="2"
                            Opacity="0"
                            Foreground="{TemplateBinding Foreground}"
                            IsHitTestVisible="False"
                            Content="{TemplateBinding OffContent}"
                            ContentTemplate="{TemplateBinding OffContentTemplate}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                            AutomationProperties.AccessibilityView="Raw" />
        <ContentPresenter x:Name="OnContentPresenter"
                            Grid.Row="1"
                            Grid.RowSpan="3"
                            Grid.Column="2"
                            Opacity="0"
                            Foreground="{TemplateBinding Foreground}"
                            IsHitTestVisible="False"
                            Content="{TemplateBinding OnContent}"
                            ContentTemplate="{TemplateBinding OnContentTemplate}"
                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                            AutomationProperties.AccessibilityView="Raw" />
    

    如果我们需要更改切换拇指旁边的文字,我们可以避免使用TemplateBinding 设置Content 属性。

    1. 在 Application.Resources 节点 (App.xaml) 下添加默认样式。如果您对此不熟悉,请参阅ResourceDictionary and XAML resource references

    2. 创建两个资源,如果需要,从后面的代码中更改值:

      <x:String x:Key="MyOffContent">Close</x:String>
      <x:String x:Key="MyOnContent">Open</x:String>
      
    3. 修改模板:

      <ContentPresenter x:Name="OffContentPresenter"
                          Grid.Row="1"
                          Grid.RowSpan="3"
                          Grid.Column="2"
                          Opacity="0"
                          Foreground="{TemplateBinding Foreground}"
                          IsHitTestVisible="False"
                          Content="{StaticResource MyOffContent}"
                          ContentTemplate="{TemplateBinding OffContentTemplate}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          AutomationProperties.AccessibilityView="Raw" />
          <ContentPresenter x:Name="OnContentPresenter"
                          Grid.Row="1"
                          Grid.RowSpan="3"
                          Grid.Column="2"
                          Opacity="0"
                          Foreground="{TemplateBinding Foreground}"
                          IsHitTestVisible="False"
                          Content="{StaticResource MyOnContent}"
                          ContentTemplate="{TemplateBinding OnContentTemplate}"
                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          AutomationProperties.AccessibilityView="Raw" />
      

    示例 XAML 代码:http://codepaste.net/qjin7c

    截图:

    【讨论】:

    • CodePaste 链接已过期。您可以将示例 xaml 粘贴到答案中吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2017-01-02
    • 2017-02-19
    相关资源
    最近更新 更多