2017-05-11 113 views
2

我有一個滑蓋造型(剪輯版)訪問風格元素

<Style x:Key="SliderThumb" TargetType="Thumb"> 
    <Setter Property="SnapsToDevicePixels" Value="true" /> 
    <Setter Property="OverridesDefaultStyle" Value="true" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Thumb"> 
       <Ellipse Height="15" Width="15" Fill="White"></Ellipse> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<ControlTemplate x:Key="Slider" TargetType="Slider"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" MinHeight="{TemplateBinding MinHeight}" /> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions> 
     <Track Grid.Row="1" x:Name="PART_Track" > 
      <Track.DecreaseRepeatButton> 
       <RepeatButton Style="{StaticResource SliderRepeatButton1}" Command="Slider.DecreaseLarge" /> 
      </Track.DecreaseRepeatButton> 
      <Track.Thumb> 
       <Thumb Style="{StaticResource SliderThumb}" /> 
      </Track.Thumb> 
      <Track.IncreaseRepeatButton> 
       <RepeatButton Style="{StaticResource SliderRepeatButton}" Command="Slider.IncreaseLarge" /> 
      </Track.IncreaseRepeatButton> 
     </Track> 
    </Grid> 
</ControlTemplate> 

<Style x:Key="BigSliderStyle" TargetType="Slider"> 
    <Setter Property="Focusable" Value="False"/> 
    <Setter Property="SnapsToDevicePixels" Value="true" /> 
    <Setter Property="OverridesDefaultStyle" Value="true" /> 
    <Style.Triggers> 
     <Trigger Property="Orientation" Value="Horizontal"> 
      <Setter Property="MinHeight" Value="21" /> 
      <Setter Property="MinWidth" Value="104" /> 
      <Setter Property="Template" Value="{StaticResource Slider}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

從我的界面我創建爲

<Slider Style="{StaticResource BigSliderStyle}"/> 

我需要綁定一個提示,只滑塊它涉及到橢圓。 有沒有辦法從表單XAML中訪問橢圓屬性?

+0

您可以在'Ellipse'上放置'ToolTip =「{TemplateBinding Tag}',並通過'Tag'標記將您的'ToolTip'內容加載回來嗎?然後只需執行< Tooltip Stuff或綁定}「/>'我沒有測試它,但這是我可能會先嚐試的。 –

+0

你的滑塊應該綁定到某些東西。應該有一些工具提示值作爲屬性。然後你可以綁定,在樣式,工具提示到它的源屬性,你可能也會爲此目的重載'Tag'屬性,但它是父對象的一個​​依賴屬性,它需要被綁定到某個東西上,所以你可能只是直接綁定到模型對象 –

+0

其實我試過這個 .... ..... <滑塊標記=「測試」樣式=「{StaticResource BigSliderStyle}」/> 它不起作用 – sergman

回答

0

這應該解決您的問題:

<Style x:Key="SliderThumb" TargetType="Thumb"> 
    <Setter Property="SnapsToDevicePixels" Value="true" /> 
    <Setter Property="OverridesDefaultStyle" Value="true" /> 
    <Setter Property="ToolTip"><!--just add this part to your code--> 
     <Setter.Value> 
      <TextBlock Text="Some text"/><!-- also you can use Text="{Binding propertyName}"--> 
     </Setter.Value> 
    </Setter><!--just add this part to your code--> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="Thumb"> 
       <Ellipse Height="15" Width="15" Fill="White"></Ellipse> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

你已經有過的風格獲得了大拇指。該元素支持開箱即用的工具提示,因此無需專注於ellipse,因爲thumb佔位符僅爲template
這也將允許您使用Slider的不同模板,讓您在整個應用中保持ToolTip

+0

工具提示的值不是靜態的(它顯示視頻的當前位置),我需要將它綁定到班級的一些屬性。我不能用風格顯然做到這一點,但從類XAML – sergman

+0

@sergman你可以用「綁定」替換「某些文本」,如果你的位置存儲在視圖模型中。 – XAMlMAX

+0

是的,這工作,雖然我可以有更通用的方法,所以風格是不知道具體的約束力。這樣我可以在不同的類中使用相同的樣式,其中一個將綁定到它自己的屬性。但我可以忍受這一點。 – sergman