2015-10-16 40 views
1

我迫切需要帮助。如何通过点击动作实现项目控件的对象选择

我的应用程序已经在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的实例里面,但我要如何去确定哪些两个项目控件中的模板已被选中,我如何应用触发器以显示它们已被选中?

请帮忙! :?'(

+0

有这必须是一个ItemsControl而不是像ListBox这样的Selector控件之一的原因吗? – mnistic

+0

它与uielement的样式以及由于界面原本是只读的,但规范扩展了:(。 此外,使用选择器控件仍然不会将选择应用于其他项目控件 – Vocalonation

+0

使用选择器控件,您可以从视图模型的两个方向绑定选择的项目控制,这会得到你想要的(应用选择)。如果ListBox不在问题中,您可能最终不得不自己实现所选项目,否则您可能还需要它。不应该太难,依赖属性和/或路由事件。 – mnistic

回答

0

如何定义输入您的DataTemplate的ItemTemplate结合,也许发送您的模板的名称作为参数,那么你可以在你的模板的名称转行做不同的处理

相关问题