我有一个ItemsControl
,其ItemsSource
绑定到一个整数ID列表。转换器使用ID来查找应向用户显示的名称。我怎样才能在XAML中做到这一点?这是我到目前为止所做的,但它不起作用:
<ItemsControl ItemsSource="{Binding Topics}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FallbackValue='topic name', Converter={StaticResource topicToStrConverter}}" Margin="0,10,0,0"/>
<Button>
<Image Source="/PlumPudding;component/Images/appbar.cancel.rest.png" />
</Button>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
真的,我想要作为转换器的参数是在模板中显示的整个项目 - 而不是该项目的属性。这是什么语法?
我正在使用Silverlight 4。
答案 0 :(得分:0)
您的代码对我的意见是正确的。
似乎'转换器'中的问题。尝试调试topicToStrConverter的代码。
答案 1 :(得分:0)
如果主题是列表,那么你拥有的是正确的。
但是,如果Topics是List,而Id是Topic类的属性,则需要使用“Path = Id”。所以:{Binding FallbakcValue ='Bla',Path = Id,Converter = {StaticResource yourConverter}
回答第二个问题: “我想要作为转换器的参数是模板中显示的整个项目 - 而不是该项目的属性”
您正在使用的此语法将传递List中的整个对象,因此在您的情况下会将int传递给转换器。同样,如果它是一个列表,那么Topic对象将被传递给转换器。
答案 2 :(得分:0)
您必须为项目控件或其中一个父项设置DataContext。如果不这样做,则没有绑定的上下文。