当前位置: 首页 > 编程语言 > C#

点击ListBoxItem区域任意控件触发SelectedIndex改变分享

时间:2023-04-11 02:18:38 C#

点击ListBoxItem区域任意控件触发SelectedIndex改变网格或图表等自定义控件较少。每个按钮都绑定到一个适当的命令处理程序,ListView控件的SelectedIndex属性也绑定到ViewModel的一个属性。问题:在命令处理程序中(绑定到按钮)我无法解析当前选定的项目/索引,因为当我单击ListBox项目内的按钮或其他控件时它不会改变,但是当我单击ListBoxItem区域本身——SelectedIndex正在改变。问题是当ListBoxItem中的任意控件被点击时如何触发SelectedIndex变化?将其添加到ListBox.ResourcesEdit前面的方法只选择ListBoxItem只要它有键盘焦点。如果您将焦点移出ListBoxItem,它将再次取消选择。这是当键盘焦点在项目内移动时选择ListBox项目的另一种简单方法,当焦点移出ListBoxItem时它保持选中状态,而在代码保护voidSelectCurrentItem(objectsender,KeyboardFocusChangedEventArgse){ListBoxItemitem=(ListBoxItem)发件人;item.IsSelected=true;}你可以在绑定命令中将项目设置为选定项目吗?如果ListItemviewmodel可以访问ListBoxesviewmodel中的任何内容,那么您应该能够设置绑定在那里的属性。PrivateSubButtonClickExecute()ListBoxVM.SelectedItem=Me.MyModelItemEndSub我偶尔会这样做并且工作正常,只要SelectedItem绑定属性是读/写的,PropertyChangeNotification就可以。如果您的ViewModel和模型不支持此功能,请告诉我们,我们可以尝试其他方法。糟糕,没有立即注意到C#标记。那应该是:ListBoxVM.selectedItem=this.myModelItem;仅限XAML的解决方案:您可以调整ItemContainerStyle并在Item内的触发器上侦听鼠标焦点。它适用于所有类型的子元素(在这个例子中只是鼠标焦点,这应该不是问题,因为键盘也会自动选择项目......)示例:testtesttesttest如果你只对下面的项目感兴趣数据模板有趣的是,您可以使用带有绑定的CommandParameter作为参数。CommandParameter={bind}这会将当前项目作为参数传递给命令,因此无需跟踪所选项目。以上是C#学习教程:当你点击ListBoxItem区域的任意一个控件时,会触发SelectedIndex改变所有的共享内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: