当我有以下代码时,一切正常:
<Image x:Key="Icons" x:Shared="false"
Source="{Binding Path=Icon}" Height="16px" Width="16px"/>
<Style x:Key="MenuItemStyle" TargetType="MenuItem" >
<Setter Property="MenuItem.ItemsSource" Value="{Binding Children}"/>
<Setter Property="MenuItem.Header" Value="{Binding Text}"/>
<Setter Property="MenuItem.IsEnabled" Value="{Binding IsEnabled}"/>
<Setter Property="MenuItem.Icon" Value="{StaticResource Icons}"/>
</Style>
但我必须从外部源加载xaml,WPF
有一个在这种情况下不允许x:Shared=
的错误。所以我创建了内部编译的x:Name=Icons
资源字典(Action是具有字符串属性Icon的数据库表,并且有Icon的路径):
<Image x:Key="Icons" x:Shared="False"
Source="{Binding Path=Action.Icon}" Height="16px" Width="16px"/>
,代码现在看起来
<ResourceDictionary x:Key="IkoniceDict" Source="/MVVM_App;component/View/iconimage.xaml"/>
<Style x:Key="MenuItemStyle" TargetType="MenuItem">
<Setter Property="MenuItem.Icon" Value="{Binding Source={StaticResource Icons}}"/>
问题是现在我得到(收藏)而不是图像:
请帮帮忙!
答案 0 :(得分:0)
将资源字典加载到控件中时,不得指定密钥。
<ResourceDictionary Source="/MVVM_App;component/View/iconimage.xaml"/>
我想我不够清楚。只有在单<SomeControl.Resources>
标记中只有此内容时,上述内容才有效。
<SomeControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionary>
<ResourceDictionary Source="/MVVM_App;component/View/iconimage.xaml"/>
</ResourceDictionary.MergedDictionary>
</ResourceDictionary>
<Style x:Key="MyStyleKey" .............>
</Style>
</SomeControl.Resources>
Resources
是ResourceDictionary
类型。所有参赛作品必须有x:Key
。如果您将x:Key
分配给ResourceDictionary
Resources
内部ResourceDictionary.MergedDictionary
标记,则会将字典放入字典中。这就是为什么你需要使用 public void disconnect() {
MediaRouter mMediaRouter = (MediaRouter) getApplicationContext()
.getSystemService(Context.MEDIA_ROUTER_SERVICE);
mMediaRouter.selectRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO,
mMediaRouter.getDefaultRoute());
}
告诉XAML解析器合并iconimage.xaml的内容。
答案 1 :(得分:0)
我认为您应该为绑定设置路径属性(将其设置为“来源”):
<Style x:Key="MenuItemStyle" TargetType="MenuItem">
<Setter Property="MenuItem.Icon" Value="{Binding Path=Source, Source={StaticResource Icons}}"/>
如果未指定路径,则默认为绑定到整个对象(在您的情况下是图标集合)。