Question

I have the following code:

<ItemsControl ItemsSource="{Binding MyDictionary}" >
<Image Width="16">
    <Image.Style>
        <Style TargetType="{x:Type Image}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Value}" Value="False">
                    <Setter Property="Source" Value="{Binding RelativeSource =                 
                    {RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, 
                    Path=DataContext.SecDic}"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Value}" Value="True">
                    <Setter Property="Source" Value="{Binding RelativeSource =                 
                    {RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, 
                    Path=DataContext.ThirdDic}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
</ItemsControl>

MyDictionary - Is a dictionary that the key is of type enum Now This binding works if I change the SecDic and ThirdDic from dictionaries to BitmapImages. But I want that for each key (enum) in MyDictionary there will be a different True/False image. So I tried to write:

<Setter Property="Source" Value="{Binding Path=DataContext.SecDic[Key],
                      RelativeSource={AncestorType={x:ItemsControl}}}"/>

But it doesn't work since the "Key" belongs to the data context of the image (of MyDictionary) and I changed the relative source to be the items control so there is no "Key". Any suggestions?

No correct solution

OTHER TIPS

What I did to solve this is a multibinding + a custom multibinding converter. There was one binding for the dictionary and one for the key.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top