あなたの例では、MVVMのように見えるdoesntのが、uは背後にあるコード内のデータを持っているしたい場合に役立ちます願っています。ここで
はXAML
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Test"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525"
Name="myWindow">
<Grid>
<ListView ItemsSource="{Binding ElementName=myWindow, Path=DrawingVisualCollection}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"></GridViewColumn>
<GridViewColumn Header="Id" DisplayMemberBinding="{Binding Path=Id}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
ための一例である
コードが背後にあるように見えるこの
namespace Test
{
public class DrawingVisualObject : DrawingVisual
{
public int Id { get; set; }
public string Name { get; set; }
public DrawingVisualObject(int id, string name)
{
Id = id;
Name = name;
}
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public ObservableCollection<DrawingVisualObject> DrawingVisualCollection
{
get { return (ObservableCollection<DrawingVisualObject>)GetValue(DrawingVisualCollectionProperty); }
set { SetValue(DrawingVisualCollectionProperty, value); }
}
// Using a DependencyProperty as the backing store for DrawingVisualCollection. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DrawingVisualCollectionProperty =
DependencyProperty.Register("DrawingVisualCollection", typeof(ObservableCollection<DrawingVisualObject>), typeof(MainWindow), new PropertyMetadata(new ObservableCollection<DrawingVisualObject>()));
public MainWindow()
{
InitializeComponent();
List<DrawingVisualObject> sample = new List<DrawingVisualObject>();
sample.Add(new DrawingVisualObject(1, "Yolo"));
sample.Add(new DrawingVisualObject(2, "Swag"));
this.FillCollection(sample);
}
public void FillCollection(IEnumerable<DrawingVisualObject> objects2fill)
{
this.DrawingVisualCollection.Clear();
foreach(DrawingVisualObject obj in objects2fill)
{
this.DrawingVisualCollection.Add(obj);
}
}
}
}
これは、のために働く必要があります
覚えておいてください: コレクションが再び初期化されている場合は、バインディングを破棄することがあります。私はFillCollection()メソッドの例でこれを表示しようとしました。つまり、MVVMを使用している場合は、ObservableCollectionを常にプライベートセットに設定する必要があります。
もう一度MVVMに戻すことをお勧めします。ビューモデルの共通基盤が何であるかを知ることは、常に良いことですstart !!!
標準のMVVMアーキテクチャはありますか? –
はい、私はMVVMアーキテクチャ –