首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamicResource抛出异常

DynamicResource抛出异常
EN

Stack Overflow用户
提问于 2012-10-02 04:04:11
回答 2查看 132关注 0票数 1

我必须将以下样式应用于我的ListViewItem

代码语言:javascript
复制
<UserControl.Resources>

<local:Look x:Key="ListViewItemLook" Background="Magenta"/>


<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>

    <Trigger Property="IsSelected" Value="True">
        <Setter Property="Background" Value="{Binding Source={DynamicResource ListViewItemLook}, Path=Background}"/>
    </Trigger>

</Style.Triggers>

</Style>

但是我得到了一个例外,我试着改变:

代码语言:javascript
复制
<Setter Property="Background" Value="{Binding Path=Background}"/>

并添加到样式中:

代码语言:javascript
复制
<Setter Property="DataContext" Value="{DynamicResource ListViewItemLook}"/>

但是is不起作用。我不能绑定到运行时,因为我需要设置BackGround属性StaticResource -time。

我该怎么办?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-02 05:10:46

将颜色拉出到单独的SolidColorBrush中,并使两个项目都引用它:

代码语言:javascript
复制
<SolidColorBrush x:Key="SelectedListViewItemBackground" Color="Magenta" />
<local:Look x:Key="whatever" Background="{StaticResource SelectedListViewItemBackground}" />
<Setter Property="Background" Value="{StaticResource SelectedListViewItemBackground}" />

如果你想做其他的事情,我不知道它是什么,因为这个问题没有意义。

票数 0
EN

Stack Overflow用户

发布于 2012-10-03 00:57:46

据我所知,DynamicResource扩展使用DependencyProperty机制(非常类似于绑定)。因此,不能使用DynamicResource设置Binding对象的Source属性,因为它不是DependencyProperty。

此外,如果您想在资源中更改Look的Background属性而不是外观本身,那么将Look as a static resource设置为binding属性应该不成问题。当然,Look类的后台属性要么触发一个PropertyChanged事件,要么本身就是一个DependencyProperty。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12680237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档