我正在使用MVVM,我的代码如下
<ListBox Grid.Row="0"
x:Name="myListBox"
ItemsSource="{Binding Path=MyClass}"
ItemTemplate="{StaticResource MyDataTemplate}"
SelectedItem="{Binding Path=SelectedItem}"
HorizontalContentAlignment="Stretch">
</ListBox>
ItemTemplate包含TextBlock
和Label
并在我的 ViewModel
中 public object SelectedItem
{
get
{
return _SelectedItem;
}
set
{
_SelectedItem = value;
//Perform My Command
}
}
只有在双击后我才能选择该项目。如何才能实现 单击鼠标左键?有没有办法将双击转换为单击?
答案 0 :(得分:0)
试试这个。 添加MouseUp事件:
<ListBox Grid.Row="0"
x:Name="myListBox"
MouseUp="myListBox_MouseUp"
ItemsSource="{Binding Path=MyClass}"
ItemTemplate="{StaticResource MyDataTemplate}"
SelectedItem="{Binding Path=SelectedItem}"
HorizontalContentAlignment="Stretch">
</ListBox>
在代码背后:
private void myListBox_MouseUp(object sender, MouseButtonEventArgs e)
{
}
如果要在MVVM中执行此操作,则需要使用Command作为示例
答案 1 :(得分:0)
我不确定这是你想要的,但这对我有用:
<ListBox Grid.Row="6"
x:Name="myListBox"
ItemsSource="{Binding Path=MyClassItems}"
SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal">
<Label Content="FooLabel: "/>
<TextBlock Text="{TemplateBinding Content}"/>
</StackPanel>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
答案 2 :(得分:-1)
您可以将代码添加到:
private void listBox1_Click(object sender, MouseEventArgs e)
{
//Codes :
}
或者,当您在ListBox中双击时,可以引发此事件:
private void listBox1_DoubleClick(object sender, EventArgs e)
{
listBox1.Click+=listBox1_Click;
}
更新:如果您想在点击该项目后执行某些操作,实际上当您单击时您正在更改所选项目的索引时,您将要引发一个名为listBox1_SelectedIndexChanged
的事件。所以你要做的就是在这个事件中添加代码。
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
//Your Codes .....
}