ich eine ListBox wie diese binden können:Wie kann ich in WPF an das ViewModel binden und verschiedene XAML-Elemente an die Methoden von ViewModel binden lassen?
XAML:
<UserControl x:Class="TestDynamicForm123.Views.ViewCustomers"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Margin="10">
<ListBox ItemsSource="{Binding}"/>
</StackPanel>
</UserControl>
-Code Behind:
using System.Windows.Controls;
using TestDynamicForm123.ItemTypes;
namespace TestDynamicForm123.Views
{
public partial class ViewCustomers : UserControl
{
public ViewCustomers()
{
InitializeComponent();
DataContext = Customers.GetAll();
}
}
}
Ansicht Modell:
using System.Collections.ObjectModel;
namespace TestDynamicForm123.ItemTypes
{
class Customers : ItemTypes
{
protected ObservableCollection<Customer> collection;
public static ObservableCollection<Customer> GetAll()
{
ObservableCollection<Customer> customers = new ObservableCollection<Customer>();
customers.Add(new Customer() { FirstName = "Jay", LastName = "Anders", Age = 34 });
customers.Add(new Customer() { FirstName = "Jim", LastName = "Smith", Age = 23 });
customers.Add(new Customer() { FirstName = "John", LastName = "Jones", Age = 22 });
customers.Add(new Customer() { FirstName = "Sue", LastName = "Anders", Age = 21 });
customers.Add(new Customer() { FirstName = "Chet", LastName = "Rogers", Age = 35 });
customers.Add(new Customer() { FirstName = "James", LastName = "Anders", Age = 37 });
return customers;
}
}
}
Aber wie kann ich es "eine Ebene höher", so kann ich in den Code hinter binden an Kunden selbst und in meinem XAML binden an Kunden verschiedene Methoden, z. GetAll() für eine ListBox und GetBest() für ein anderes Steuerelement usw.?
Ich versuchte es mit dieser Syntax in der Code-behind:
DataContext = new Customers();
Und diese beiden Syntaxen in der XAML aber weder Arbeit:
<ListBox ItemsSource="{Binding GetAll}"/> (returns blank ListBox)
<ListBox ItemsSource="{Binding Source={StaticResource GetAll}}"/> (returns error)
ich dachte, dass etwas war Object zu vermeiden, zusätzlich scheint es nicht in Silverlight zu sein, so würde ich einige Muster bekommen nach unten, ohne sie, so nahm ich es heraus, gebunden meine V meiner VM, legte die Daten offen, gebunden, aber es wird nicht angezeigt: http://stackoverflow.com/questions/802162/why-is-this-view-not-correctly-binding-to-this-viewmodel –