【问题标题】:How to unselect a listbox datatemplate item?如何取消选择列表框数据模板项?
【发布时间】:2011-05-03 04:27:53
【问题描述】:
<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;

但它们没有效果。

【问题讨论】:

  • 您是否尝试将所选索引设置为-1?

标签: c# wpf listbox


【解决方案1】:

this.lbActive.SelectedItem = null; 没有理由不工作。 (它适用于干净的列表框)

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

【讨论】:

    【解决方案2】:

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

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

    另外,你不需要命名 (x:Name="ItemCtrl"),在这种情况下它是不必要的。

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多