Rahul Rathod
Rahul Rathod

Reputation: 115

Change image of button on click of combobox

I am trying something like this: as my form load I have one image on button (this part work fine) and one check box. When I check checkbox, the image of button should change. I have attached my xaml code with this. Please go through it and suggest changes.

<CheckBox Name="checkbox" Margin="141,148,336,147"/>

<Button Foreground="Black" Height="50" Margin="238,206,179,64">
    <Button.Template>
        <ControlTemplate TargetType="{x:Type Button}">
            <StackPanel Orientation="Horizontal">
                <Image>
                    <Image.Style>
                        <Style>
                            <Setter Property="Image.Source" 
                        Value="Images/cancel_16.ico" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding ElementName=checkbox, Path=IsChecked, 
                             RelativeSource={RelativeSource AncestorType=
                            {x:Type Button}}}" Value="True">
                                    <Setter Property="Image.Source" 
                                Value="Images/cancel_16grayscale.ico" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
                <ContentPresenter Content="{TemplateBinding Content}" 
            Margin="5,0,0,0" />
            </StackPanel>
        </ControlTemplate>
    </Button.Template>
</Button>

Upvotes: 0

Views: 525

Answers (1)

Dinesh balan
Dinesh balan

Reputation: 495

Just Remove the RelativeSource and add UpdateSourceTrigger Like this in your style

 <Image.Style>
      <Style>
          <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=checkbox, Path=IsChecked,UpdateSourceTrigger=PropertyChanged}"                              
                             Value="True">
                      <Setter Property="Image.Source"                                                          
                              Value="Back_jeans.jpg" />
                 </DataTrigger>
                 <DataTrigger Binding="{Binding ElementName=checkbox, Path=IsChecked,UpdateSourceTrigger=PropertyChanged}"   
                               Value="False">
                        <Setter Property="Image.Source"
                                Value="Blue_Front_Jeans.jpg" />
                 </DataTrigger>
           </Style.Triggers>
      </Style>
</Image.Style>

Upvotes: 1

Related Questions