Value Converter在CustomControl中不起作用

时间:2015-12-22 11:36:09

标签: c# wpf xaml user-controls converter

我尝试使用this post中的控件 - FlipView Control。 这就是我所拥有的:

ImagePathConverter

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var url = string.Format("{0}{1}", ConfigurationManager.AppSettings["SiteUri"], value); var bi = new BitmapImage(); bi.BeginInit(); bi.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; bi.CacheOption = BitmapCacheOption.OnDemand; bi.UriSource = new Uri(url); bi.EndInit(); return bi.Clone(); } 设置ImageSource:

<flipViewControl:FlipView.ItemTemplate>
                                                <DataTemplate>
                                                    <TextBlock Text="{Binding FileLocation}"></TextBlock>
                                                    <!--<Image Source="{Binding FileLocation, Converter={StaticResource ImagePathConverter}}" Stretch="Fill"/>-->
                                                </DataTemplate>
                                            </flipViewControl:FlipView.ItemTemplate>

但是在这个用户控件中,在Debug中,我从来没有进入这个转换器(当我在一个简单的单独图像上尝试它时,它可以工作)。

这个问题的解决方案是什么? (图像不显示,因为转换器不为图像应用正确的ImageSource)

我用这个控件和转换器创建了一个测试项目 - 它有效...奇怪,很奇怪

UPD:现在好像是

dll

根本不起作用。我试图设置另一个模板,但它也不起作用。 关于绑定 - 我添加了转换器只是为了查看here绑定的内容并且绑定是正确的。

UPD:当我理解自定义控件应该是单独的public class NullStringCriterion : StringCriterion { public override string GetQuery(string propertyName) { return String.Format(" ({0} IS NULL) ", propertyName); } } 时,问题已解决。所以我只是将我的代码移到单独的项目中并添加对Main项目的引用......

1 个答案:

答案 0 :(得分:0)

如何将属性FileLocation更改为

之类的内容
public object FileLocation
{
    get
    {
        try
        {
             return new BitmapImage(new Uri((string)PathToImage));
        }
        catch 
        {
             return new BitmapImage();
        }
    }
}

XAML

<flipViewControl:FlipView ItemsSource="{Binding Images}" Name="ImagesFlipView" SelectedIndex="{Binding ElementName=ProductImagesBullets, Path=SelectedIndex, Mode=TwoWay}" Grid.Row="0">
    <flipViewControl:FlipView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding FileLocation}" />  
        </DataTemplate>
    </flipViewControl:FlipView.ItemTemplate>
</flipViewControl:FlipView>

不使用转换器?