【问题标题】:Silverlight: How to use a converter with an ItemsControl?Silverlight:如何使用带有 ItemsControl 的转换器?
【发布时间】:2010-12-09 03:21:27
【问题描述】:

我有一个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。

【问题讨论】:

    标签: silverlight data-binding xaml


    【解决方案1】:

    如果主题是列表,那么你所拥有的就是正确的。

    但是,如果 Topics 是 List,并且 Id 是 Topic 类的属性,则需要使用“Path=Id”。所以:{Binding FallbakcValue='Bla', Path=Id, Converter={StaticResource yourConverter}

    回答你第二个问题: “我想要作为转换器参数的是模板中显示的整个项目 - 而不是该项目的属性”

    您使用的这种语法将传递 List 中的整个对象,因此在您的情况下,会将一个 int 传递给转换器。同样,如果是列表,则将 Topic 对象传递给转换器。

    【讨论】:

      【解决方案2】:

      您的代码在我看来是正确的..

      “转换器”中似乎存在问题。尝试调试topicToStrConverter的代码。

      【讨论】:

        【解决方案3】:

        您必须为项目控件或其父项之一设置 DataContext。如果您不这样做,则绑定没有上下文。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-05
          • 1970-01-01
          • 2014-07-22
          • 2011-04-07
          • 1970-01-01
          • 1970-01-01
          • 2011-07-07
          • 1970-01-01
          相关资源
          最近更新 更多