我有一个ListView,显示使用MVVM&的帐户列表。一个自定义模板,工作正常 现在单击Acct Name,我们需要执行需要当前Acct对象的自定义操作
有没有办法将Label.Tag属性设置为Acct对象?
xaml def在下面 env是vs2010 .net 4.0 c#
<ListView Name="lv1" Grid.Column="1" Grid.Row="4"
ItemsSource="{Binding AccountsList}"
Background="Transparent" BorderThickness="0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="/asm1;component/Images/Icons/pdf1.png" Width="12" Height="12" />
<Label Content="{Binding Name}" Margin="0,0,25,0"
ContextMenu="{x:Null}" Name="lblacctItem"
MouseDoubleClick="lbl_MouseDoubleClick" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Background="Transparent"
Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"
ItemWidth="{Binding (ListView.View).ItemWidth, RelativeSource={RelativeSource AncestorType=ListView}}"
MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
ItemHeight="{Binding (ListView.View).ItemHeight, RelativeSource={RelativeSource AncestorType=ListView}}" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
答案 0 :(得分:1)
您正在混合使用MVVM和代码。
您应该创建一个命令行为(Link)来标记。然后,您应该将CommandParameter绑定到AccObject,并将Command绑定到您需要执行的操作。
应删除以下内容。
MouseDoubleClick="lbl_MouseDoubleClick"
根据评论更新
当前项目绑定到AccObject时,只需在命令参数中使用Binding即可。
CommandParameter = {Binding}
答案 1 :(得分:1)
您可以将SelectedItem属性设置为viewmodel的SelectedAccount属性。
SelectedItem =“{Binding SelectedAccount}” Background =“Transparent”BorderThickness =“0”&gt;
在SelectedAccount属性上使用INotifyPropertyChanged接口。
谢谢, Rajnikant