当我尝试从后面代码中的列表绑定静态资源名称时,我遇到了一个大问题。
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/