Как привязать элемент при помощи RelativeSource в WPF к другому элементу того же уровня?

Есть ListBox с следующим шаблоном элементов:

<ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <CheckBox IsChecked="true"></CheckBox>
                        <Image Width="22"
                               Height="22"
                               Margin="5"
                               Source="/Images/play.png"
                             >
                            <Image.Style>
                                <Style>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding Path=IsChecked, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=CheckBox}}" Value="true">
                                            <Setter Property="Image.Source" Value="/Images/pause.png"/>
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding Path=IsChecked, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=CheckBox}}" Value="false">
                                            <Setter Property="Image.Source" Value="/Images/play.png"/>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Image.Style>
                        </Image>

                        <StackPanel>
                            <TextBlock FontWeight="Bold" Text="{Binding Path=title}"></TextBlock>
                            <TextBlock Text="{Binding Path=duration}" />
                        </StackPanel>

                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>


Необходимо привязать триггер, меняющий изображение, к свойству CheckBox-а IsChecked. Возможно ли сделать это? Сейчас стоит привязка к родительскому элементу при помощи FindAncestor.
  • Вопрос задан
  • 588 просмотров
Решения вопроса 1
@pupunussi
Проще всего привязать, используя x:Name и ElementName:

<CheckBox x:Name="CheckBox" IsChecked="True"></CheckBox>

далее

<DataTrigger Binding="{Binding IsChecked, ElementName=CheckBox}" Value="False">
    ...
</DataTrigger>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы