首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IValueConverter不执行

IValueConverter不执行
EN

Stack Overflow用户
提问于 2014-12-13 23:46:16
回答 1查看 130关注 0票数 0

我有这个XAML代码(ErdMenuItem.xaml):

代码语言:javascript
复制
<UserControl x:Class="ErdBuilder.ErdMenuItem"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:erdBuilder="clr-namespace:ErdBuilder"
  x:Name="UserControl">  

   <UserControl.Resources>
      <erdBuilder:ByteImageConverter x:Key="imageConverter" />
   </UserControl.Resources>

   <Image Source="{Binding Converter={StaticResource imageConverter}, ElementName=UserControl, Path=Icon}" />
</UserControl>

如果我写:

代码语言:javascript
复制
<Image Source="{Binding Converter={StaticResource imageConverter}, ElementName=UserControl, Path=Icon}" />

然后转换器将不会执行-我在转换器中使用断点。但如果我用这个

代码语言:javascript
复制
<Image Source="{Binding Converter={StaticResource imageConverter}}" />

然后将执行转换器。图标字符串类型的依赖属性。我不知道为什么转换器将不会执行,因为我添加的DependencyProperty,应该带来的价值,我想转换。有什么想法吗?

图标在这里,(ErdMenuItem.xaml.cs):

代码语言:javascript
复制
namespace ErdBuilder
{
    public partial class ErdMenuItem
    {
        public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(string), typeof(ErdMenuItem), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure));
        public string Icon
        {
            get { return (string)GetValue(IconProperty); }
            set { SetValue(IconProperty, value); }
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-13 23:57:17

这是因为DataContext中没有数据。绑定表达式返回当前DataContext的值。可以通过使用DataContext表达式为Image设置{Binding Converter={StaticResource imageConverter}, Path=Icon},也可以为根元素设置{Binding Converter={StaticResource imageConverter}, Path=Icon}(在本例中为UserControl)。这个选项更好,因为您可以使用RelativeSource表达式来避免使用显式名称。

代码语言:javascript
复制
<UserControl x:Class="ErdBuilder.ErdMenuItem"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:erdBuilder="clr-namespace:ErdBuilder"
  x:Name="UserControl"
  DataContext="{Binding RelateSource={RelativeSource Self}}">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27464866

复制
相关文章

相似问题

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