【发布时间】:2015-10-18 18:37:50
【问题描述】:
当我试图从后面的代码列表中绑定静态资源的名称时,我遇到了一个大问题。
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}"
它也可以,但我想从列表中自动绑定。 谁能给我任何提示来解决这个问题?;)
【问题讨论】:
-
你能展示你在 Resources/Icons.xaml 中有什么吗?是否有图像或一些向量(路径)?
-
-
xaml 资源中将本地资源(文件)中的图像存储为 BitmapImage 的原因是什么?您可以将资源作为 Uri 添加到模型中,而无需额外的 BitmapImages 和转换器。就像here。
-
因为我将资源存储在 .shared 中,并且我想在 W8.1 和 WP8.1 项目之间使用它。是不是个好主意?
-
我在下面放了更长的答案。
标签: c# wpf xaml windows-phone-8.1