从ListView,XAML中的绑定对象中检索属性/字段

时间:2015-12-09 21:21:59

标签: c# xaml listview uwp

如何检索绑定到ObservableCollection的{​​{1}}中的对象?我想在ListView中显示这些对象的属性/字段。我正在使用MVVM设计。 ListView现在正在显示绑定对象的命名空间,只是为了澄清绑定是否有效。

XAML:

ListView

背后的代码:

<Page
    x:Class="Test.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Test"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="using:Test.ViewModels"
    mc:Ignorable="d" d:DataContext="{d:DesignInstance vm:TestViewModel}">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Width="400" Height="400">
        <Border BorderBrush="Gray" BorderThickness="2">
            <ListView x:Name="TestList" ItemsSource="{Binding TestClasses}" Foreground="Black" Height="300">
                <!-- Code to bind TestClasses properties/fields goes here -->
            </ListView>
        </Border>
    </Grid>
</Page>

我的ViewModel:

 public sealed partial class MainPage : Page
    {
        private readonly TestViewModel _viewModel;
        public MainPage()
        {
            _viewModel = new TestViewModel();
            DataContext = _viewModel;
            InitializeComponent();
        }
    }

最后我想要显示属性/字段的类:

class TestViewModel : BaseViewModel
    {
        private ObservableCollection<TestClass> _testClasses;
        public ObservableCollection<TestClass> TestClasses
        {
            get { return _testClasses; }
            private set
            {
                _testClasses = value;
                OnPropertyChanged();
            }
        }

        public TestViewModel()
        {
            TestClasses = new ObservableCollection<TestClass> { new TestClass("test1,", 1), new TestClass("test2", 2) };
        }
    }

我真的无法找到一个很好的方法(我对ViewModel本身中每个可能的属性/字段都不感兴趣) - 我希望你们能帮忙!

1 个答案:

答案 0 :(得分:2)

你尝试了什么? 因为如果为该ListView定义一个ItemTemplate,你只需绑定到这些属性:

<ListView>
  <ListView.ItemTemplate>
    <DataTemplate>
      <TextBlock Text={"Binding Name, Mode=TwoWay"} />
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>