当我尝试从后面代码中的列表绑定静态资源名称时,我遇到了一个大问题。

public IDictionary<int, Menuitem> Categories = new Dictionary<int, Menuitem>();
Categories.Add(1, new Menuitem() { Name = "Menu1", Image = "Menu1Resource" });
list.ItemsSource = Categories;


在XAML中

<Page.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Icons.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Page.Resources>


我想这样绑定

<ListView Padding="20 0" Grid.Row="1" x:Name="list" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border Background="#53921D" Margin="0 0 0 10" Padding="15">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1*"/>
                                <ColumnDefinition Width="9*"/>
                            </Grid.ColumnDefinitions>
                            <Image Source="{StaticResource ResourceKey={Binding Value.Image}}"/>
                            <TextBlock Grid.Column="1" Foreground="White" Text="{Binding Value.Name}" HorizontalAlignment="Center" FontSize="30" VerticalAlignment="Center"/>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListView.ItemContainerStyle>
</ListView>


绑定到TextBlock效果很好,但绑定到Image Source却不行。
当我像这样绑定到图像源时

Source="{StaticResource Menu1Resource}"


它也工作,但我想从列表中自动绑定。
谁能给我任何解决这个问题的技巧?;)

最佳答案

在这一行:

Categories.Add(1, new Menuitem() { Name = "Menu1", Image = "Menu1Resource" });


您可能将ResourceKey Menu1Resource设置为Image,以为您将获得Image对象。

做这个 :

Categories.Add(1, new Menuitem() { Name = "Menu1", Image = _getImgFromResKey("Menu1Resource") });

Image _getImgFromResKey(string key)
{
   //access resource from res dictionary
}


最后是<Image Source="{Binding Value.Image}"/>

How to get resource from Res Dictionary

关于c# - 将列表值中的字符串绑定(bind)为StaticResource,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33201754/

10-17 01:19