我想根据一些属性设置一个ItemTimplate。我刚刚创建了一个标记,其中设置了ItemTemplate,如下所示:
<controls:Panorama Title="Some Title" ItemsSource="{Binding Modules}" ItemTemplate="{Binding Id, Converter={StaticResource ControlTemplateConverter}}">
<controls:Panorama.Background>
<ImageBrush ImageSource="PanoramaBackground.png"/>
</controls:Panorama.Background>
</controls:Panorama>并像这样实现ControlTemplateConverter:
public class ControlTemplateConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
StringBuilder sbTemp = new StringBuilder();
sbTemp.Append("<DataTemplate ");
sbTemp.Appen("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
sbTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
sbTemp.Append("<StackPanel>");
sbTemp.Append("<TextBlock Text=\"News News\" />");
sbTemp.Append("</StackPanel>");
sbTemp.Append("</DataTemplate>");
return (DataTemplate)XamlReader.Load(sbTemp.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}我注册了一个转换器:
<UserControl.Resources>
<converter:ControlTemplateConverter x:Key="ControlTemplateConverter" />
</UserControl.Resources>但是,当我在ControlTemplateConverter.Convert中设置断点时,它在调试过程中永远不会停止。每次都会加载ItemSource。怎么了?谢谢。
发布于 2010-10-15 19:46:54
我怀疑绑定在找到Modules属性的同一个DataContext中找不到属性Id。因此,没有对转换器的调用。这可能是因为Id实际上是每个Module的属性,而不知何故,您可以想象为每个项目解析ItemTemplate绑定。没有。您有一个应用于ItemsSource中所有项的模板。
https://stackoverflow.com/questions/3941452
复制相似问题