0

私はC#とVS2010で次のものを持っています:

- a MainWindow.xaml with a ListView
- a MainViewModel with an ObservableCollection of objects of type, UnitData
- a UnitDataDisplay.xaml with a bunch of labels tied to members of UnitData

MainViewModelのUnitDatasのObservableCollectionに基づく必要がある可変数のUnitDataDisplayをListViewに表示する必要があります。MVVMの関心の分離を壊すことなく、ListViewアイテムを複数のUserControlオブジェクトにバインドするには、XAMLの構文を正確にどのようにする必要がありますか?つまり、ObservableCollectionに一連のUnitDataDisplayオブジェクトを簡単に含めることができますが、それにより、MainViewModelにビューの詳細の知識が強制されます。

MainWindowXAMLファイルは次のようになります。

<Window x:Class="ListViewTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="350">
    <Grid>
        <ListView Height="234" HorizontalAlignment="Left" Margin="12,28,0,0" Name="listView1" VerticalAlignment="Top" Width="304" ItemsSource="{Binding Path=UnitDataDisplay}"/>
    </Grid>
</Window>

どんな助けでも大歓迎です。

4

1 に答える 1

0

一般的なアプローチは、モデル タイプに基づく暗黙的なデータ テンプレートUnitDataを使用することです ( )。

<Window.Resources>
   <DataTemplate DataType="{x:Type local:UnitData}">
      <local:UnitDataDisplay />
   </DataTemplate>
</Window.Resources>

次に、リスト内の各項目を選択可能にしたくない場合は、ListViewをに変更します。ListBoxItemsControl

また、上記のアプローチではなく、Caliburn.Microなどの MVVM フレームワークを使用することを真剣に検討します。これにより、このようなビューの構成がはるかに簡単になり、他の多くの利点が得られます。

于 2012-11-15T23:27:16.410 に答える