如何取消选择列表框数据模板项

本文关键字:数据 列表 选择 何取消 取消 | 更新日期: 2023-09-27 17:54:32

<TabItem Name="tbInActive" Header="Previous" Width="100" Height="100">
    <ListBox Name="lbActive" 
             DockPanel.Dock="Top"
             ItemContainerStyle="{DynamicResource SelectedItemContainer}">
        <ListBox.ItemTemplate>
            <DataTemplate  >
                <EventDet:EventSumDetail x:Name="ItemCtrl"
                                         SelectedItem="{Binding ElementName=lbInActive, Path=SelectedItem}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <!-- ... -->
</TabItem>

在我的代码后面我尝试了

this.lbActive.SelectedItem = null;this.lbActive.UnselectAll();和(编辑)this.lbActive.SelectedIndex = -1;

但是没有效果。

如何取消选择列表框数据模板项

this.lbActive.SelectedItem = null;没有理由不工作。(它工作在一个干净的石板ListBox)

我很确定问题在于你的自定义部分,要么SelectedItem="{Binding ElementName=lbInActive, Path=SelectedItem}"是强制选择,要么在你的ItemContainerStyle绑定这样做。

我猜想EventDet:EventSumDetail是一种ListBoxItem或类似的东西。问题是你有单向绑定(默认情况下)…你必须显式地使它成为双向绑定。这样的:

<EventDet:EventSumDetail SelectedItem="{Binding ElementName=lbInActive, Path=SelectedItem, Mode=TwoWay}" />

同样,您不需要name (x: name ="ItemCtrl"),在这种情况下,它是不必要的。