【问题标题】:MultiBinding on a WPF ListboxWPF 列表框上的多重绑定
【发布时间】:2014-05-23 10:25:14
【问题描述】:

如何在列表框上使用这样的代码???:

<TextBlock>
    <TextBlock.Text>    
        <MultiBinding StringFormat="{}{0} + {1}">
            <Binding Path="Name" />
            <Binding Path="ID" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

我想在列表框上执行上述操作。我的数据源有两个项目,名字和姓氏,我想同时显示两者。我试过了,但它不起作用:

<ListBox ItemsSource="{Binding}" Name="listBox" Width="200" DockPanel.Dock="Left" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionChanged="selectionChanged" >
                <ListBox.DisplayMemberPath>
                    <MultiBinding StringFormat="{}{0} + {1}">
                        <Binding Path="forenames" />
                        <Binding Path="surname" />
                    </MultiBinding>
                </ListBox.DisplayMemberPath>
            </ListBox>

请注意,我想像上面那样使用 xaml,而不是单独的 IConverter 类或其他东西。

【问题讨论】:

  • 总是描述“不工作”。完整的错误消息等。
  • 将来会这样做

标签: wpf listbox multibinding


【解决方案1】:

使用自定义ItemTemplate代替DisplayMemberPath

<ListBox ItemsSource="{Binding}" Name="listBox" Width="200" DockPanel.Dock="Left" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionChanged="selectionChanged" >
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBlock>
            <TextBlock.Text>
               <MultiBinding StringFormat="{}{0} + {1}">
                  <Binding Path="forenames" />
                  <Binding Path="surname" />
               </MultiBinding>
            </TextBlock.Text>
         </TextBlock>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

【讨论】:

  • 你只需要使用@dkozl提到的datatemplate
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-16
  • 1970-01-01
  • 2011-01-27
  • 2011-08-28
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多