我有一个ListView的情况。在项目模板中有一个DataTemplate,在DataTemplate中有一个ListViewItem,它的内容是绑定的。当我单击时,我想选择项目,但是当我将鼠标悬停在它上面时,似乎有一个用ItemTemplate和DataTemplate创建的按钮。目前,我可以通过单击同一行中的其他地方来选择项目,但如果我选择按钮,则不起作用。我使用SelectedItem,如果你点击项目内的按钮,SelectedItem将不会被触发。
ListView被链接到一个ItemSource,并且ListView的SelectedItem被绑定到一个属性
进一步说明:语言是c#, ide是Visual Studio 2010。
我将在下面留下我的xaml代码,谢谢。
XAML
<ListView x:Name="myListView"
Grid.Column="0"
Grid.Row="2"
Height="Auto"
Margin="0,0,0,0"
SelectionChanged="SchemaListView_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<ListViewItem Content="{Binding Path=Value}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
c#void ReadData(string id)
{
var data = ExampleData.GetData(id);
myListView.ItemsSource = data.Results;
}
我已经尝试绑定没有ItemTemplate和DataTemplate也试图链接源在xaml,但没有工作
ListView的ItemTemplate
中不能有ListViewItem
当ItemsSource
集合的元素还不是ListViewItem时(它们通常都不是),框架将自动创建一个ListViewItem,它将成为"项目容器"。元素,用于每个数据项。这个自动生成的ListViewItem使用ItemTemplate作为它的ContentTemplate
。
除此之外,当你不设置ListView的View
属性时,使用ListBox
而不是ListView
。
所以用ContentControl
或者TextBlock
代替ListViewItem
:
<ListBox ...>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
如果只有一个内容元素,只需设置DisplayMemberPath
属性:
<ListBox ... DisplayMemberPath="Value"/>