如何取消选择列表框datatemplate项?

时间:2011-05-02 19:48:22

标签: c# wpf listbox

<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;

但他们没有效果。

2 个答案:

答案 0 :(得分:1)

this.lbActive.SelectedItem = null;没有理由不起作用。 (它适用于干净的平板ListBox)

我很确定您的自定义部件存在问题,SelectedItem="{Binding ElementName=lbInActive, Path=SelectedItem}"正在强制进行选择,或者ItemContainerStyle中的绑定会这样做。

答案 1 :(得分:0)

我认为EventDet:EventSumDetail是一种ListBoxItem或类似的东西。 你有一个OneWay绑定的问题(默认情况下)...你必须明确地使它成为TwoWay绑定..像这样:

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

此外,您不需要命名(x:Name =“ItemCtrl”),在这种情况下,它是不必要的。