2016-07-31 63 views
0

这是我绑定到集合的控件。未选择时如何隐藏物品模板的子控件

<ListBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Path=Pallets}" > 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <DockPanel> 
       <Button Content="C" DockPanel.Dock="Left"/> 
       <Button Content="D" DockPanel.Dock="Right"/> 
       <TextBlock Text="{Binding Path=Name}"/> 
      </DockPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ListBox> 

,这是它的样子

enter image description here

我想达成什么是有默认隐藏的两个按钮(左,右),而应该成为一个可见选定的项目。

我suposse,它可以使用触发器?

回答

0

我得到了它自己

<Button Content="C" DockPanel.Dock="Left"> 
    <Button.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger 
        Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" 
        Value="False"> 

        <Setter Property="Button.Visibility" Value="Hidden" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
0

您可以使用绑定和转换器来实现that.In您的用户控件declay这个资源

<UserControl.Resources>  
    <BooleanToVisibilityConverter x:Key="BoolToVis"/> 
</UserControl.Resources> 

<ListBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Path=Pallets}" > 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <DockPanel> 
       <Button Content="C" DockPanel.Dock="Left" Visibility={Bindin Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}},Converter{StaticResource BoolToVis }"}/> 
       <Button Content="D" DockPanel.Dock="Right" Visibility={Bindin Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}},Converter{StaticResource BoolToVis }"}/> 
       <TextBlock Text="{Binding Path=Name}"/> 
      </DockPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ListBox> 

请注意做live.I不具有存取权限到现在VS检查语法

+0

是啊,我国防部确切说,已经。对不起,你的时间会很多,但是不管怎么样 – user853710