是否有一种简单/标准的方法可以从文件读取到列表视图并从列表视图保存到文件?我真的不在乎它是 TXT 文件、XAML 文件还是二进制文件。这不重要,我没有那么多数据。
这是每个列中存储的列和数据
public class LVData
{
public string Name { get; set; }
public string YoungPic { get; set; }
public string MediumPic { get; set; }
public string AdultPic { get; set; }
public bool SaltWater { get; set; }
public bool FreshWater { get; set; }
public bool Grasslands { get; set; }
public bool Swamp { get; set; }
public bool TropicalForrest { get; set; }
public bool Forest { get; set; }
public bool ForestEdge { get; set; }
public bool Sand { get; set; }
public bool Coastal { get; set; }
public bool RiverBorder { get; set; }
public bool LakeBorder { get; set; }
public bool Floodplain { get; set; }
}
我的列表视图名为 listView1。
和 XAML:
<Window x:Class="DinosaurIsland.PlantDisplay"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DinosaurIsland"
Title="Vegetation" Height="308" Width="1212" WindowStyle="SingleBorderWindow"
DataContext="{Binding RelativeSource={RelativeSource Self}}" Loaded="Window_Loaded">
<Window.Resources>
<DataTemplate x:Key="YoungPicCell">
<StackPanel Orientation="Horizontal">
<Image Height="200" Width="200" Stretch="None" Source="{Binding YoungPic}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="MediumPicCell">
<StackPanel Orientation="Horizontal">
<Image Height="200" Width="200" Stretch="None" Source="{Binding MediumPic}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AdultPicCell">
<StackPanel Orientation="Horizontal">
<Image Height="200" Width="200" Stretch="None" Source="{Binding AdultPic}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="TerrainCell">
<StackPanel Orientation="Vertical">
<CheckBox Content="Salt Water" Name="SaltWaterCheckbox" IsThreeState="False" IsChecked="{Binding Saltwater}" />
<CheckBox Content="Fresh Water" Name="FreshWaterCheckbox" IsThreeState="False" IsChecked="{Binding Freshwater}" />
<CheckBox Content="Grassland / Plains" Name="GrasslandsCheckbox" IsThreeState="False" IsChecked="{Binding Grassland}" />
<CheckBox Content="Swamp" Name="SwampCheckbox" IsThreeState="False" IsChecked="{Binding Swamp}" />
<CheckBox Content="Tropical Forest" Name="TropicalForestCheckbox" IsThreeState="False" IsChecked="{Binding TropicalForest}" />
<CheckBox Content="Forest" Name="ForestCheckbox" IsThreeState="False" IsChecked="{Binding Forest}" />
<CheckBox Content="Forest Edge" Name="ForestEdgeCheckbox" IsThreeState="False" IsChecked="{Binding ForestEdge}" />
<CheckBox Content="Sand" Name="SandCheckbox" IsThreeState="False" IsChecked="{Binding Sand}" />
<CheckBox Content="Coastal" Name="CoastalCheckbox" IsThreeState="False" IsChecked="{Binding Coastal}" />
<CheckBox Content="River Border" Name="RiverBorderCheckbox" IsThreeState="False" IsChecked="{Binding RiverBorder}" />
<CheckBox Content="LakeBorder" Name="LakeBorderCheckbox" IsThreeState="False" IsChecked="{Binding LakeBorder}" />
<CheckBox Content="Floodplain" Name="FloodplainCheckbox" IsThreeState="False" IsChecked="{Binding Floodplain}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="PlacePlantsCell">
<StackPanel Orientation="Vertical">
<Label Margin="10" Content="Random" HorizontalAlignment="Center" ></Label>
<Slider Margin="10" Width="190" Value="50" Orientation="Horizontal" HorizontalAlignment="Center" IsSnapToTickEnabled="True" Maximum="100" TickPlacement="BottomRight" TickFrequency="5"> </Slider>
<Button Margin="10" Content="Randomly Seed Plants" HorizontalAlignment="Center" Height="23" Name="SeedButton" ></Button>
</StackPanel>
</DataTemplate>
</Window.Resources>
<DockPanel>
<Grid>
<ListView Name="listView1">
<ListView.View>
<GridView>
<GridViewColumn Width="152" Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Width="202" Header="Picture of Young Plant" CellTemplate="{StaticResource YoungPicCell}" />
<GridViewColumn Width="202" Header="Picture of Medium Plant" CellTemplate="{StaticResource MediumPicCell}" />
<GridViewColumn Width="202" Header="Picture of Adult Plant" CellTemplate="{StaticResource AdultPicCell}" />
<GridViewColumn Width="202" Header="Terrain / Environments" CellTemplate="{StaticResource TerrainCell}" />
<GridViewColumn Width="202" Header="Place Plants" CellTemplate="{StaticResource PlacePlantsCell}" />
</GridView>
</ListView.View>
</ListView>
<Button Content="New Plant" DockPanel.Dock="Bottom" Height="23" HorizontalAlignment="Left" Margin="160,240,0,0" Name="NewPlant" VerticalAlignment="Top" Width="75" Click="NewPlant_Click" />
<Button Content="Save" DockPanel.Dock="Bottom" Height="23" HorizontalAlignment="Center" Margin="1099,240,15,0" Name="SavePlant" VerticalAlignment="Top" Width="75" Click="SavePlant_Click"/>
<Button Content="Load" Height="23" HorizontalAlignment="Left" Margin="26,240,0,0" Name="LoadPlants" VerticalAlignment="Top" Click="LoadPlants_Click" Width="75" />
</Grid>
</DockPanel>
这是整个表单/对话框/listview(不管它叫什么)的图片: Listview image http://dinosaur-island.com/wordpress/wp-content/uploads/2013/06/Seding-Plants.jpg
自从拍摄了这个屏幕截图后,我还添加了一个“加载”按钮。