我试图获取选定的ListViewItem的信息以将其放入例如几个文本框中。我一直在寻找答案,但似乎没有任何帮助。我已经尝试了SelectedItem,SelectedSubItem。我只想获取所选项目的信息,并在其他区域中将其显示为带有其他信息的更大区域:WPF:
<ListView Grid.Column="3" Height="650" Name="MealsList" ScrollViewer.CanContentScroll="False" >
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Ellipse Grid.RowSpan="3" Height="60" Width="60" HorizontalAlignment="Center" VerticalAlignment="Center">
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding Path}"/>
</Ellipse.Fill>
</Ellipse>
<TextBlock x:Name="FoodName" Grid.Column="1" Text="{Binding Name}" Margin="12,6,0,0"/>
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding Calories , StringFormat=\{0\} kcal}" Margin="12,6,0,0"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
C#
public partial class Ernährungsplan : UserControl
{
public Ernährungsplan()
{
InitializeComponent();
LoadDefault();
}
private void Breakfast()
{
// MealsList.Items.Clear();
List<Meals> items = new List<Meals>
{
new Meals() { Name = "Dinkel-Apfel-Müsli-Joghurt", Calories = 270, Path = "/Images/dinkelapfelmueslijoghurtfruehstück.png" },
new Meals() { Name = "Papaya mit körnigem Frischkäse", Calories = 220, Path = "/Images/papaya-mit-koernigem-frischkaese.png" },
new Meals() { Name = "Vollkornbrot mit Quark, Bananenscheiben", Calories = 150, Path = "/Images/vollkornbrot-mit-quark-bananenscheiben.png" },
new Meals() { Name = "Obstsalat", Calories = 270, Path = "/Images/obstsalat.png" },
new Meals() { Name = "Beeren-Knusper-Quark", Calories = 220, Path = "/Images/beeren-knusper-quark.png" },
new Meals() { Name = "Cloud-Eggs", Calories = 150, Path = "/Images/cloud-eggs.png" },
new Meals() { Name = "Roggenbrötchen mit Käse, Radieschen und Sprossen", Calories = 270, Path = "/Images/roggenbroetchen-mit-kaese-radieschen-und-sprossen.png" },
new Meals() { Name = "Joghurt mit Blaubeeren und Banane", Calories = 220, Path = "/Images/joghurt-mit-blaubeeren-pecannuessen-und-banane.png" },
new Meals() { Name = "Rühreibagel mit Lachs", Calories = 150, Path = "/Images/ruehreibagel-mit-lachs.png" },
};
MealsList.ItemsSource = items;
}
private void Lunch()
{
//MealsList.Items.Clear();
List<Meals> items = new List<Meals>
{
new Meals() { Name = "Schnitzel im Sauseschritt mit Spitzkohl-Slaw", Calories = 490, Path = "/Images/schnitzel-im-sauseschritt-mit-spitzkohl-slaw.png" },
new Meals() { Name = "Pfanne mit Steak und Brokkoli", Calories = 350, Path = "/Images/Express-Pfanne-mit-Steak-und-Brokkoli.png" },
new Meals() { Name = "Gemüsepfanne mit Lachs", Calories = 550, Path = "/Images/gemuesepfanne-mit-lachs.png" },
new Meals() { Name = "Makkaroni Molto p(r)esto", Calories = 560, Path = "/Images/makkaroni-moltopresto.png" },
new Meals() { Name = "Hähnchen mit Express-Bratreis", Calories = 670, Path = "/Images/haehnchen-mit-express-bratreis.png" },
new Meals() { Name = "Farfalle mit Möhren-Hähnchen-Sugo", Calories = 760, Path = "/Images/farfalle-mit-moehren-haehnchen-sugo.png" },
new Meals() { Name = "Putenbrust mit Mango, Kürbis und roten Linsen", Calories = 460, Path = "/Images/putenbrust-mit-mango-kuerbis-roten-linsen.png" },
new Meals() { Name = "Reisnudeln mit Asia-Hackfleisch", Calories = 740, Path = "/Images/reisnudeln-mit-asia-hackfleisch.png" },
new Meals() { Name = "Süss-Scharfe Reis-Bowl Hawaii", Calories = 560, Path = "/Images/suess-scharfe-reisbowl-hawaii.png" },
};
MealsList.ItemsSource = items;
}
private void Dinner()
{
//MealsList.Items.Clear();
List<Meals> items = new List<Meals>
{
new Meals() { Name = "Gnocchi mit Spinat und Lachs", Calories = 540, Path = "/Images/gnocchi-mit-spinat-und-lachs.png", Carbs = 45, Fats = 30, Proteins = 18, Link = "https://www.lecker.de/ruck-zuck-gnocchi-mit-spinat-und-lachs-74105.html"},
new Meals() { Name = "Thainudelsuppe mit Hähnchen", Calories = 440, Path = "/Images/thainudelsuppe-mit-haehnchen.png", Carbs = 37, Fats = 15, Proteins = 37, Link = "https://www.lecker.de/thainudelsuppe-mit-haehnchen-70443.html"},
new Meals() { Name = "Fladenbrot-Gyrospizza", Calories = 670, Path = "/Images/fladenbrot-gyrospizza.png", Carbs = 60, Fats = 23, Proteins = 51, Link = "https://www.lecker.de/fladenbrot-gyrospizza-71701.html"},
new Meals() { Name = "Omelett mit Lachs und Fenchelsalat", Calories = 560, Path = "/Images/ommm-omelett-mit-lachs-und-fenchelsalat.png", Carbs = 8, Fats = 44, Proteins = 28, Link = "https://www.lecker.de/ommm-omelett-mit-lachs-und-fenchelsalat-77612.html"},
new Meals() { Name = "Geschnetzeltes mit Gnocchi und Pestorahm", Calories = 670, Path = "/Images/geschnetzeltzes-mit-gnocchi-und-pestorahm.png", Carbs = 52, Fats = 34, Proteins = 37, Link = "https://www.lecker.de/geschnetzeltes-mit-gnocchi-und-pestorahm-64982.html"},
new Meals() { Name = "Penne mit Bratwurst-Bolo", Calories = 610, Path = "/Images/express-penne-mit-bratwurst-bolo.png", Carbs = 82, Fats = 19, Proteins = 23, Link = "https://www.lecker.de/express-penne-mit-bratwurst-bolo-8353.html"},
new Meals() { Name = "Hähnchen-Gemüsepfanne", Calories = 340, Path = "/Images/haehnchen-gemuesepfanne.png", Carbs = 25, Fats = 14, Proteins = 26, Link = "https://www.lecker.de/haehnchen-gemuesepfanne-67018.html" },
new Meals() { Name = "Feurige Garnelenpfanne", Calories = 190, Path = "/Images/feurige-garnelenpfanne.png", Carbs = 10, Fats = 7, Proteins = 22, Link = "https://www.lecker.de/feurige-garnelenpfanne-60571.html"},
new Meals() { Name = "Putenpasta in Zitronencreme", Calories = 570, Path = "/Images/putenpasta-in-zitronencreme.png", Carbs = 43, Fats = 26, Proteins = 37, Link = "https://www.lecker.de/putenpasta-zitronencreme-74548.html"},
};
MealsList.ItemsSource = items;
}
public class Meals
{
public string Name { get; set; }
public int Calories { get; set; }
public int Carbs { get; set; }
public int Fats { get; set; }
public int Proteins { get; set; }
public string Path { get; set; }
public string Link { get; set; }
}
private void LoadDefault()
{
Breakfast();
GridCursor.SetValue(Grid.ColumnProperty, 0);
}
private void MealsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
}
由于列表视图的ItemsSource是Meals
对象列表,因此SelectedItem
它将为null或选定的Meals
对象。
要在其他控件中显示所选对象的某些属性,可以使用
private void MealsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var meal = (Meals)((ListView)sender).SelectedItem;
if (meal != null
{
MahlzeitInfoText.Text = meal.Name;
}
else
{
MahlzeitInfoText.Text = "";
}
}
不要忘记将事件处理程序附加到SelectionChanged
事件。
另一种通常的首选方式是使用MVVM模式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句