亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用MVVM從WPF ListView項觸發雙擊事件

使用MVVM從WPF ListView項觸發雙擊事件

慕少森 2019-10-25 13:14:56
在使用MVVM的WPF應用程序中,我有一個帶listview項的usercontrol。在運行時,它將使用數據綁定將對象集合填充到列表視圖中。將雙擊事件附加到列表視圖中的項目的正確方法是什么,以便雙擊列表視圖中的項目時,將觸發視圖模型中的相應事件并具有對被單擊項目的引用?如何以干凈的MVVM方式完成操作,即視圖中沒有任何代碼?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

我能夠使它與.NET 4.5一起使用??雌饋砗芎唵危恍枰魏蔚谌交虼a。


<ListView ItemsSource="{Binding Data}">

        <ListView.ItemsPanel>

            <ItemsPanelTemplate>

                <StackPanel Orientation="Horizontal"/>

            </ItemsPanelTemplate>

        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>

                <Grid Margin="2">

                    <Grid.InputBindings>

                        <MouseBinding Gesture="LeftDoubleClick" Command="{Binding ShowDetailCommand}"/>

                    </Grid.InputBindings>

                    <Grid.RowDefinitions>

                        <RowDefinition/>

                        <RowDefinition/>

                    </Grid.RowDefinitions>

                    <Image Source="..\images\48.png" Width="48" Height="48"/>

                    <TextBlock Grid.Row="1" Text="{Binding Name}" />

                </Grid>

            </DataTemplate>

        </ListView.ItemTemplate>

    </ListView>


查看完整回答
反對 回復 2019-10-25
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

我喜歡使用“ 附加命令行為和命令”。Marlon Grech很好地實現了“附加命令行為”。然后,可以使用這些樣式為ListView的ItemContainerStyle屬性分配一種樣式,該樣式將為每個ListViewItem設置命令。


在這里,我們設置要在MouseDoubleClick事件上觸發的命令,而CommandParameter將是我們單擊的數據對象。在這里,我將沿著可視化樹前進以獲取我正在使用的命令,但是您可以輕松地創建應用程序范圍的命令。


<Style x:Key="Local_OpenEntityStyle"

       TargetType="{x:Type ListViewItem}">

    <Setter Property="acb:CommandBehavior.Event"

            Value="MouseDoubleClick" />

    <Setter Property="acb:CommandBehavior.Command"

            Value="{Binding ElementName=uiEntityListDisplay, Path=DataContext.OpenEntityCommand}" />

    <Setter Property="acb:CommandBehavior.CommandParameter"

            Value="{Binding}" />

</Style>

對于命令,您可以直接實現ICommand,也可以使用MVVM Toolkit中提供的一些幫助程序。


查看完整回答
反對 回復 2019-10-25
  • 3 回答
  • 0 關注
  • 1757 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號