2015-05-13 48 views
0

目前我正在开发一个reversi游戏,并且这是一个Stone板的ControlTemplate,我使用DataTrigger来查看所有者是谁的石头以将按钮设置为合适的图像,但是当我在setter上使用TargetName(对于图像刷,这是imga)。我得到一个错误“无法找到触发器目标'imga'(目标必须出现在使用它的任何Setters,Triggers或Conditions之前)。”Datatrigger更改ImageBrush来源

但是由于我在我的setters之前宣布了这个画笔,对我来说。此代码位于app.xaml资源中。

在此先感谢

这是按钮

<Style x:Key="0" TargetType="{x:Type Button}"> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="SnapsToDevicePixels" Value="True" /> 
     <Setter Property="Height" Value="48"/> 
     <Setter Property="Width" Value="48" /> 
     <Setter Property="Template"> 

      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Button}"> 
        <Ellipse> 
         <Ellipse.Fill x:Uid="filler"> 
          <ImageBrush x:Name="imga" ImageSource="afbeeldingen/vuur.jpg"/> 

         </Ellipse.Fill> 
        </Ellipse> 

        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Background" Value="#E59400" /> 

         </Trigger> 

         <DataTrigger Binding="{Binding Owner.Value.ArrayIndex}" Value="0"> 
          <DataTrigger.Setters> 

           <Setter TargetName="imga" Property="ImageSource" Value="afbeeldingen/vuur.jpg" /> 


          </DataTrigger.Setters> 
         </DataTrigger> 

回答

0

IMGA相关的部分是不是你的模板的一部分,它是一种资源,所以你不能从一个触发器更改其属性。你所要做的就是改变Ellipse的Fill属性。你会有这样的事情:

<ControlTemplate TargetType="{x:Type Button}"> 
    <Ellipse x:Name="myEllipse"> 
     <Ellipse.Fill x:Uid="filler"> 
      <ImageBrush x:Name="imga" ImageSource="afbeeldingen/vuur.jpg"/> 
     </Ellipse.Fill> 
    </Ellipse> 

    <ControlTemplate.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="#E59400" /> 
     </Trigger> 

     <DataTrigger Binding="{Binding Owner.Value.ArrayIndex}" Value="0"> 
      <DataTrigger.Setters> 
       <Setter TargetName="myEllipse" Property="Fill"> 
        <Setter.Value> 
         <ImageBrush x:Name="imga" ImageSource="afbeeldingen/vuur.jpg"/> 
        </Setter.Value> 
       </Setter> 
      </DataTrigger.Setters> 
     </DataTrigger> 
+0

是否有可能知道我的答案有什么问题?如果我错了,我想知道请... – mgarant

+0

这个工程,非常感谢 –