WPF XAML привязывает ключ ресурса к свойству - PullRequest
1 голос
/ 17 апреля 2020

У меня есть набор значков, хранящихся в файле с именем Icons.xaml в MyProject / Resource.

<!-- Icons.xaml -->
<DrawingImage x:Key="CounterClockWiseDirection">...</DrawingImage>
<DrawingImage x:Key="ClockWiseDirection">...</DrawingImage>

В моей ViewModel есть свойство с именем ClockWiseDirection, которое должно управлять этим изображением.

<!-- MyControUC.xaml -->
<ListBox ItemsSource="{Binding ItemList}" SelectedItem="{Binding SelectedItemFromList}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="70*" />
                    <ColumnDefinition Width="10*" />
                    <ColumnDefinition Width="10*" />
                    <ColumnDefinition Width="10*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding Name}" />
                <Image Grid.Column="1" />
                <Image Grid.Column="2" Source="{StaticResource CurrentItem.ClockWiseDirection}" />
                <Image Grid.Column="3" />
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Это, очевидно, не работает, я довольно новичок в WPF, поэтому я немного озадачен решением использовать / look.

1 Ответ

0 голосов
/ 20 апреля 2020

Похоже, вы пытаетесь вернуть ресурс ключ из модели представления. Вы также можете вместо этого вернуть действительный DrawingImage и привязать к нему в разметке XAML:

Source="{Binding ClockWiseDirection}"

Если ресурс, определенный в вашем Icons.xaml ResourceDictionary, является в области действия вы можете получить ссылку на него, вызвав FindResource и приведя результат:

ClockWiseDirection = `FindResource("CounterClockWiseDirection") as DrawingImage;` 

Другой вариант - создать объект ResourceDictionary динамически и получить оттуда ресурс:

ResourceDictionary rd = new ResourceDictionary() { Source = new Uri("Themes/generic.xaml", UriKind.RelativeOrAbsolute) };
ClockWiseDirection = rd["CounterClockWiseDirection"] as DrawingImage;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...