2013-03-18 89 views
0

我想在WPF中创建我自己的scrollviewer,除了RepeatButton中的背景图像以外,它工作正常。如果我使用SolidColorBrush而不是ImageBrush,它可以正常工作。下面是我的xaml,我已经验证了ImageSource可以通过将其添加到滚动条中的其他位置(特别是轨道图像)中找到。你知道这是为什么吗? forground图像显示正常。在ScrollBarViewer的RepeatButton中使用背景图像不显示图像

<Style x:Key="ScrollBarButtonStyle" TargetType="RepeatButton"> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="Width" Value="50"/> 
    <Setter Property="Height" Value="50"/>   
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="RepeatButton"> 
       <Grid Name="ButtonBackground"> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <ImageBrush ImageSource="{DynamicResource ListItemBackgroundBttnNormal}"/> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Pressed"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <ImageBrush ImageSource ="{DynamicResource ListItemBackgroundBttnPressed}"/> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Disabled"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <ImageBrush ImageSource = "{DynamicResource ListItemBackgroundBttnDisabled}"/> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
            <DoubleAnimation Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="Opacity" From="1.0" To="0.5"/> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Background"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <ImageBrush ImageSource="{DynamicResource ListItemBackgroundBttnNormal}"/> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <ContentPresenter 
          x:Name="contentPresenter" 
          Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Margin="{TemplateBinding Padding}"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

回答

0

尝试将DynamicResource更改为StaticResource并查看它是否仍然有效。如果未找到路径,则StaticResource将不会显示任何错误,而StaticResource将在此处执行此操作。我认为你的图像源在这方面是不知道的。 确保您在0123.x的App.xaml中添加资源。

+0

谢谢,就是这样。我不得不将它添加到MergedDictionaries中。我不能将它作为资源添加。 – user1701907 2013-03-19 13:50:51