2015-12-09 76 views
0

如何檢索綁定爲ListViewObservableCollection中的對象?我想在ListView中顯示這​​些對象的屬性/字段。我正在使用MVVM設計。 ListView現在顯示綁定對象的名稱空間,只是爲了闡明綁定的作用。從列表視圖中檢索綁定對象的屬性/字段XAML

的XAML:

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

背後的代碼:

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) }; 
     } 
    } 

最後,而我想顯示的屬性/領域類:

[Bindable] 
public class TestClass 
{ 
    public TestClass(String name, int id) 
    { 
     Name = name 
     Id = id; 
    } 
    public String Name { get; set; } 
    public int Id { get; set; } 
} 

我真的無法弄清楚一個很好的方法來做到這一點(我沒有興趣在ViewModel本身中綁定每個可能的屬性/字段) - 我希望你們可以幫忙!

回答

2

你試過了什麼? 因爲如果你定義一個ItemTemplate爲ListView控件您只需綁定到這樣的性質:

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

始終以顯而易見的選擇.. wauw,甚至沒有嘗試過的,因爲它沒有自動提示我綁定到名爲「Name」的變量 - 在網絡上嘗試了許多其他複雜的建議。 非常感謝我的幫助,讓我看到了顯而易見的方式!歡呼聲,標記爲答案。 – zniwalla