jak odczytać wartość z klasy reprezentującej DataContext kontrolki z poziomu ResourceDictionary (Image.Style) ?

0

Hej wszystkim! Wkraczam na nieznane terytorium i znowu nie potrafię odnaleźć odpowiedzi w google. Tytuł bardzo pogmatwany, wiem.

Mam klasę ModuleElement, która reprezentuje DataContext Checkboxów.
screenshot-20180702232301.png
screenshot-20180702233719.png

CheckBoxy korzystają z ResourceDictionary:
screenshot-20180702233933.png

Gdy próbuję odczytać Content Checkboxa aby porównać go i ustawić ImageSource nie ma najmniejszego problemu. Natomiast mi zależy na tym, aby odczytać wartość zawartą w CheckBox.DataContext. Wyczytałem kilka kursów temu, że do konwertowania wartości służy konwerter. Mógłbym więc DataContext przemienić w string z wartością która mnie interesuje. Tworzy to jednak dodatkowy kod w .cs a chcę jak najwięcej umieścić w xamlu.

Czy istnieje możliwość odczytania wartości z klasy w DataContext bez użycia konwertera? Prosiłbym o Wasze wskazówki / opinie

0

W sumie zrobiłem to za pomocą konwertera, aż tak wiele do pisania nie było:

// DataContext To ModuleElementName Converter
    class DataContextToModuleElementNameConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            
            return (value != null) ? (value as ModuleElement).ModuleNameEnum.ToString() : "";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
W pliku xaml:
```xml
<Conv:DataContextToModuleElementNameConverter x:Key="GetModuleNameFromDataContext"/>

oraz

<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=CheckBox}, Path=DataContext, Converter={StaticResource GetModuleNameFromDataContext}}" Value="CreateAccount">
                <Setter Property="Source" Value="Icons/ModuleIcon-CreateAccount.png"/>
            </DataTrigger>

Da się to zrobić łatwiej czy tak może zostać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1