2017-06-15 92 views
1

定义的组合框添加一个按钮,我有这个ItemsControl在我的XAML定义WPF:在DataTemplate中

<ItemsControl Grid.ColumnSpan="3" Grid.Row="1" HorizontalAlignment="Center" ItemsSource="{Binding MyItems, Mode=TwoWay}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="200"/> 
        <ColumnDefinition Width="200"/> 
        <ColumnDefinition Width="200"/> 
       </Grid.ColumnDefinitions> 
       <Label HorizontalContentAlignment="Center" Grid.Column="0" Content="{Binding FirstProperty}"/> 
       <Label HorizontalContentAlignment="Center" Grid.Column="1" Content="{Binding SecondProperty}"/> 
       <Label HorizontalContentAlignment="Center" Grid.Column="2" Content="{Binding ThirdProperty}"/> 
       <ComboBox HorizontalAlignment="Center" ItemsSource="{Binding CBSource}" Grid.Column="2" Width="140" Visibility="{Binding HasCombobox, Converter={StaticResource BoolToVis}}"> 
        <ComboBoxItem> 
         <Button Content="INeedAButtonHere"></Button> 
        </ComboBoxItem> 
       </ComboBox> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

我需要添加到这样一个Button创建的每个ComboBox,可能是放置在的底部由于ComboBox有源码,因此下拉菜单。显示UserControl时,我当前的代码会引发异常(XamlParseError)。如何做到这一点?

+0

你想在组合框的每个项目按钮?或者只是每个组合框的按钮? – mm8

+0

只需为每个组合框设置一个按钮,放置在下拉框的底部 –

回答

1

你可以使用一个CompositeCollection

<ItemsControl Grid.ColumnSpan="3" Grid.Row="1" HorizontalAlignment="Center" 
       ItemsSource="{Binding MyItems}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.Resources> 
        <CollectionViewSource x:Key="cvs" Source="{Binding CBSource}" /> 
       </Grid.Resources> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="200"/> 
        <ColumnDefinition Width="200"/> 
        <ColumnDefinition Width="200"/> 
       </Grid.ColumnDefinitions> 
       <Label HorizontalContentAlignment="Center" Grid.Column="0" Content="TEST"/> 
       <Label HorizontalContentAlignment="Center" Grid.Column="1" Content="{Binding SecondProperty}"/> 
       <Label HorizontalContentAlignment="Center" Grid.Column="2" Content="{Binding ThirdProperty}"/> 
      <ComboBox HorizontalAlignment="Center" Grid.Column="2" Width="140" Visibility="{Binding HasCombobox, Converter={StaticResource BoolToVis}}"> 
        <ComboBox.ItemsSource> 
         <CompositeCollection> 
          <CollectionContainer Collection="{Binding Source={StaticResource cvs}}" /> 
          <ComboBoxItem> 
           <Button Content="INeedAButtonHere"></Button> 
          </ComboBoxItem> 
         </CompositeCollection> 
        </ComboBox.ItemsSource> 
       </ComboBox> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+1

我甚至不知道这种工具的存在。它完美的工作,谢谢 –