【问题标题】:ListView - select index only programmaticallyListView - 仅以编程方式选择索引
【发布时间】:2012-03-23 09:56:35
【问题描述】:

我正在尝试实现列表框(或列表视图):

<ListView ItemsSource="{Binding Players}" SelectedIndex="{Binding SelectedIndex}">

我的问题是,我想将选定的索引绑定到代码隐藏中的属性。 它仅适用于表单启动,但我需要禁用用户更改选择。 Selectin 将仅以编程方式更改。

感谢所有建议或解决方案:)

【问题讨论】:

    标签: c# wpf binding listbox viewbox


    【解决方案1】:

    所以,可行的解决方案:

    private void playersList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (sender.GetType() == typeof(ListView))
        {
            (sender as ListView).SelectedIndex = GameObserver.Instance.core.SelectedIndex;
            e.Handled = true;
        }
    }
    

    在 XAML 中:

    <ListView ItemsSource="{Binding Players}" SelectedIndex="{Binding SelectedIndex}" SelectionChanged="playersList_SelectionChanged">
    

    和有界属性:

    private int selectedIndex = 1;
    public int SelectedIndex
    {
        get
        {
            return selectedIndex;
        }
    }
    

    【讨论】:

      【解决方案2】:

      你在这里有两个任务:

      以编程方式选择:WPF ListView Programmatically Select Item

      并禁用用户选择:WPF ListView turn off selection

      【讨论】:

      • 我没有具体说明我想帮助什么,这是一个错误。关于禁用选择,我只需要禁用用户即可更改选择,但此解决方案是如何完全禁用选择(具体而言,如何更改未选择项目的背景)。
      • 你指定的很好,别担心。希望我的链接有所帮助。
      • 我只需要禁用用户来更改选择,但这个解决方案是如何完全禁用选择(具体而言,如何更改背景,如未选择项目)。注意:这是从第一个答案编辑...
      • 如果您的意思是您希望它看起来没有被选中,则只需获取先前选择的索引并在用户做出新选择后将其还原。虽然很抱歉,但我不确定我是否明白你现在在问什么。
      • private void playerList_SelectionChanged(object sender, SelectionChangedEventArgs e) { Console.WriteLine(sender.GetType().ToString()); if (e != null) { (sender as ListBox).SelectedItem = e.RemovedItems[0]; } } 但是这个效果是堆栈溢出...
      【解决方案3】:

      只是没有设置

       Public Int SelectedIndex 
       {
            get { return selectedindex; }  
       }
      
       public void mysub()
       {
            selectedindex = 2; 
            NotifyPropertyChanged("SelectedIndex");
       }
      

      【讨论】:

      • 是的,我就是这样做的。但问题是,用户可以通过“单击”列表来更改选择。我需要更改的唯一方法是通过我的代码...
      • 您没有在问题中包含该详细信息。您应该标记您的问题,因为您没有展示您尝试过的内容,而不是标记答案。该答案确实阻止了 SelectedIndex 的设置。视觉是另一回事。
      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多