【发布时间】:2018-02-23 13:35:28
【问题描述】:
在我的项目中,我有一个绑定到对象的 observablecollection 的列表视图,我有一个在列表视图中获取所选项目的事件,我需要将项目作为 Card 对象获取,而不仅仅是对象。有没有办法做到这一点?
对象:
public class Card
{
public string Name { get; set; }
public string Icon { get; set; }
public string Image { get; set; }
public string CMC { get; set; }
public string Colour { get; set; }
public string Set { get; set; }
public string MultiverseID { get; set; }
public string Power { get; set; }
public string Toughness { get; set; }
public string Type { get; set; }
}
收藏:
public ObservableCollection<Card> SearchedCards { get; set; }
列表视图 XAML
<ListView Name="List" ItemsSource="{Binding SearchedCards}" Margin="0,41,1568,0" ItemTemplate="{DynamicResource List}"/>
<DataTemplate x:Key="List">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<TextBlock Name="ID" Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Left" Width="215" MouseMove="customHoverEvent" MouseLeftButtonDown="DoubleClickAdd"/>
</StackPanel>
<StackPanel Orientation="Vertical" HorizontalAlignment="Right">
<Image Source="{Binding Icon}" Width="90" Height="16" Margin="0,0,0,0" HorizontalAlignment="Right" MouseMove="hide"/>
</StackPanel>
</StackPanel>
</DataTemplate>
项目获取事件
private void DoubleClickAdd(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
Card item = DeckList.SelectedItem as Card;
test.Text = item.CMC;
DeckList.Items.Add(List.SelectedItem);
}
}
【问题讨论】:
-
如何将它们插入到列表视图中?如果它是卡片,那么只需
var card = (Card)obj; -
使用直接转换:
var card = (Card)mylist.SelectedItem. -
@RacilHilan 当我这样做时,所有对象属性都显示为空。
-
这就是假设您将
ListView绑定到Card对象列表的方式。如果不查看您的代码,我们将无法为您提供帮助。
标签: c# visual-studio listview object observablecollection