我迫切需要帮助。如何通过点击动作实现项目控件的对象选择
我的应用程序已经在WPF中创建,并且在屏幕上是两个itemcontrols,它们使用与itemssource相同的可观察集合。一个在网格中放置元素,另一个在椭圆上根据列表中的x-y变量放置元素。 我想点击在任一椭圆形或电网产生的DataTemplates之一,选择它,并同时拥有相应元素发光或做别的事情来表示:
不过,我想实现以下时很卡选择。 (即如果我点击网格中的模板,网格和椭圆都会做一些事情来表明模板已被选中。)
现在,我已经能够使用这种类型保存点击的项目绑定在数据模板中。 ItemsSourceViewModel中包含所讨论的itemsource。
<StackPanel.InputBindings>
<MouseBinding Command="{Binding SelectImage}" CommandParameter="{Binding Path=.}" MouseAction="LeftClick"></MouseBinding>
</StackPanel.InputBindings>
然后SelectImage的ICommand绑定到鼠标点击实现为这样:
private ItemsSourceViewModel foo;
public SelectImage(ItemsSourceViewModel incoming)
{
this.foo = incoming;
}
public event EventHandler CanExecuteChanged;
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
var obj = parameter as ImageTemplate;
foo.SelectedImage = obj;
}
所以现在我选择的对象是救了我的ItemsSourceViewModel的实例里面,但我要如何去确定哪些两个项目控件中的模板已被选中,我如何应用触发器以显示它们已被选中?
请帮忙! :?'(
有这必须是一个ItemsControl而不是像ListBox这样的Selector控件之一的原因吗? – mnistic
它与uielement的样式以及由于界面原本是只读的,但规范扩展了:(。 此外,使用选择器控件仍然不会将选择应用于其他项目控件 – Vocalonation
使用选择器控件,您可以从视图模型的两个方向绑定选择的项目控制,这会得到你想要的(应用选择)。如果ListBox不在问题中,您可能最终不得不自己实现所选项目,否则您可能还需要它。不应该太难,依赖属性和/或路由事件。 – mnistic