WPF绑定如何获取对象引用

时间:2012-11-07 05:54:22

标签: c# .net wpf xaml data-binding

我有一个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>

2 个答案:

答案 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