【问题标题】:How to bind a ListView with SelectionMode multiple to achieve MVVM using Behaviors SDK in Windows 8.1如何在 Windows 8.1 中使用 Behaviors SDK 将 ListView 与多个 SelectionMode 绑定以实现 MVVM
【发布时间】:2014-08-21 14:56:13
【问题描述】:

我有一个 Windows 8.1 应用程序,其 ListView 具有多个 SelectionMode(使 ListView 允许用户选择多个条目)

我正在尝试使用来自 Microsoft 的 Behaviors SDK

<DataTemplate x:Key="DataItemTemplate">
    <TextBlock Text="{Binding Name}" Margin="10,0,0,0"/>
</DataTemplate>

<ListView ItemsSource="{Binding Data}"
          SelectionMode="Multiple"
          ItemTemplate="{StaticResource DataItemTemplate}">
    <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior SourceObject="{Binding}" EventName="SelectionChanged"/>
    </Interactivity:Interaction.Behaviors>
</ListView>

如您所见,ListView 的 ItemSource 已绑定到属性 Data,它是我的 ViewModel 中的一个 List,如下所示

public List<MyData> Data { get; set; }

class MyData
{
    public string Name { get; set; }

    public bool IsSelected { get; set; }
}

如果在我的视图中选择了相应的元素,我能想到的方法是在 MyData 类中将 IsSelected 属性设置为 true。但这个解决方案看起来我需要有代码隐藏。

我已为我的 ListView 附加了 EventTriggerBehavior,但我无法弄清楚如何绑定它以及将它绑定到什么。

如果有人能指出正确的方向来实现这一点,我会非常高兴,这样我的列表数据就会有数据让我区分我的 SelectedItems 和未选择的项目。或者如果我可以完全消除 IsSelected bool 属性,那就更好了。

提前致谢。

【问题讨论】:

    标签: c# mvvm winrt-xaml windows-8.1 win-universal-app


    【解决方案1】:

    WinRT XAML Toolkit 中查看BindableSelection

    您可以在 XAML 中按以下方式使用它:

    xmlns:Extensions="using:WinRTXamlToolkit.Controls.Extensions"
    Extensions:ListViewExtensions.BindableSelection="{Binding SelectedItems, Mode=TwoWay}"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多