【问题标题】:Error Binding ImageSource to ImageBrush将 ImageSource 绑定到 ImageBrush 时出错
【发布时间】:2014-05-01 12:26:19
【问题描述】:

我有一个名为 MyUser 的类。它包含一个公共属性“Image”,如下所示

private ImageSource _Image;

public ImageSource Image
{
    get { return _Image; }
    set
    {
        if (value != _Image)
        {
            _Image = value;
            OnPropertyChanged("Image");
        }
    }
}

我有一个 WPF UserControl,它包含一个用该用户的图像填充路径的设置器。 (User 是 ViewModel 中的 MyUser 对象)

<Setter Property="Fill">
    <Setter.Value>
        <ImageBrush ImageSource="{Binding Path=User.Image}"
                    Stretch="UniformToFill" />
    </Setter.Value>
</Setter>

我在运行时遇到错误(不是异常)

System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。绑定表达式:路径=用户.图像;数据项=空;目标元素是“ImageBrush”(HashCode=21084988);目标属性是“ImageSource”(输入“ImageSource”)

图像显示得非常好。为什么我会收到此错误?这是我应该关心的事情吗?

感谢您的所有帮助! 莫

【问题讨论】:

    标签: c# wpf binding


    【解决方案1】:

    请阅读similar error message的答案。微软表示这是 WPF 中的一个小错误,但不值得关注,因为它不会影响运行时行为。

    【讨论】:

      【解决方案2】:

      一旦我收到类似的消息。我的问题是,WPF 无法确定 one FrameworkElement 继承 DataContext 来自,它属于视觉树或逻辑树。我将其解释为它假定了VisualTree 中的第一个FrameworkElement。所以我认为这条消息应该是对这种行为的暗示。

      在这些术语中,您应该检查您的容器或用户控件或您使用的任何东西是否属于可视/逻辑树。

      否则,您可以尝试通过ElementName=...RelativeSource={RelativeSource FindAncestor, AncestorType=...} 指定DataContext 来显式确定它。

      但是您是否尝试过诊断此绑定?使用命名空间 xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase" 并将 , diag:PresentationTraceSources.TraceLevel=High 添加到您的绑定中,您应该能够确定那里发生了什么。

      【讨论】:

        猜你喜欢
        • 2016-02-02
        • 1970-01-01
        • 2017-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多