0

スライダーの値をデータ バインディングからのみ設定できるようにしようとしています。ユーザーがスライダーの値を手動で変更できるようにしたくありません。これがスニペットです。それを行う方法に関する提案。

<Slider  x:Name="Serverslider"  Value="{Binding Value}"   

                               />

不足している属性はありますか?

4

1 に答える 1

1

wojtek が示唆するように、 IsEnabled="False" を使用して、入力がスライダーに影響を与えないようにすることができます。あなたはこれを得る:

ここで、Slider の塗りつぶしの色を変更する必要があるという追加の要件があります。ここでは、次の 2 つのオプションがあります。

  1. スライダーを再テンプレート化し、「無効」の視覚状態を変更して、希望どおりに表示します。Blend で、スライダーを右クリックし、[テンプレートの編集] > [コピーの編集] を選択します。次に、変更する色を見つけます。ここでは、無効状態の塗りつぶしの色、Thumb Background、および Thumb BorderBrush になります。たとえば、次の XAML を変更します。

    <VisualState x:Name="Disabled">
      <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalDecreaseRect">
          <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SliderTrackDecreaseDisabledBackgroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="HorizontalThumb">
          <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SliderThumbDisabledBackgroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="HorizontalThumb">
          <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource SliderThumbDisabledBackgroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
    

    これに:

    <VisualState x:Name="Disabled">
      <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalDecreaseRect">
          <DiscreteObjectKeyFrame KeyTime="0" Value="Red"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="HorizontalThumb">
          <DiscreteObjectKeyFrame KeyTime="0" Value="Orange"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="HorizontalThumb">
          <DiscreteObjectKeyFrame KeyTime="0" Value="Yellow"/>
        </ObjectAnimationUsingKeyFrames>
    

    注: 垂直スライダー テンプレートが気になる場合は、「垂直*」とマークされた部分を編集します。コード例: https://github.com/finnigantime/Samples/tree/master/examples/Win8Xaml/Slider_RetemplateDisabledState

  2. アプリ内のすべての無効なスライダーが同じように見える場合は、app.xaml で無効なスライダーを描画するために使用される「テーマ リソース」をオーバーライドできます。

    <Application>
      <Application.Resources>
        <ResourceDictionary>
          <SolidColorBrush x:Key="SliderTrackDecreaseDisabledBackgroundThemeBrush" Color="Green" />
          <SolidColorBrush x:Key="SliderThumbDisabledBackgroundThemeBrush" Color="Lime" />
        </ResourceDictionary>
    

    コード例: https://github.com/finnigantime/Samples/tree/master/examples/Win8Xaml/Slider_OverrideDisabledResources

于 2013-05-13T07:19:06.450 に答える