2012-12-08 56 views
0

我想从下面的ItemsControl中删除一个元素,而不使用Window.CommandBinding。有没有更简单的方法来做到这一点?从ItemsControl通过按下按钮XAML删除元素C++/CX

XAML:

 <ItemsControl ItemsSource="{Binding Path=MyStringArray}"> 
      <ItemsControl.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel/> 
       </ItemsPanelTemplate> 
      </ItemsControl.ItemsPanel> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <Button Content="Abcd"/> 
         <Button Content="-" Click="Button_Click_1"/> 
        </StackPanel> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 

如果没有更简单的方法,又怎能与Window.CommandBindings

也做,在这段代码中,我怎么能做出的第一个按钮的宽度取整个屏幕宽度减去第二个按钮的宽度?

回答

0

使用项目模板上的按钮删除项目控件中的项目的最简单方法是使用与绑定到当前项目的命令参数绑定的命令。然后您从后备集合中删除当前项目。

要实现您要查找的按钮间距,请使用网格进行布局。创建两个GridColumns。给第一个宽度为*,第二个宽度为Auto。假设您的ItemsControl的间距设置正确,这将实现您寻找的间距。

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 

    <Button Grid.Column="0" Content="Abcd"/> 
    <Button Grid.Column="1" Content="-" Command="{Binding YourCommand}" CommandParamter={Binding}/> 
</Grid> 

用于命令结合一个方便的类参见here为更完整的条命令结合示例和here

+0

谢谢。我真的不明白CommandBinding。我找到了另一种方法。我在按钮单击方法中使用以下代码行:myString = static_cast (sender) - > DataContext-> ToString();它给了我的值在向量中的字符串的相应值,所以我可以做一个搜索和删除元素(我没有重复)。我不太了解DataContext返回的内容。我认为它给出了具有约束力的第一个父代的绑定的值。 – balauru

+0

做了大致相同的事情。发件人是'Button',所以按钮的'DataContext'与'Button'的上下文相同。从上面的东西中,'',这个绑定正在查看ItemsControl的'DataContext',然后在其中寻找'MyStringArray'。 – mydogisbox