【发布时间】:2017-11-01 12:18:21
【问题描述】:
列表视图点击与我在数据模板中的列表视图不一致。我在列表视图中添加了一个事件设置器,因为我想使用列表视图的选择更改事件来获取列表视图的选定项目并将其传递给另一个要处理的函数。我暂时使用消息框而不是测试功能。但是当我选择一个项目时,该事件只会触发一段时间,我会每 5 秒进行一次轮询以更新我的列表。
C#:
private void ListViewItem_PreviewMouseLeftButtonOtherMatchDown(object sender, MouseButtonEventArgs e)
{
var item = sender as ListViewItem;
if (item != null && item.IsSelected)
{
Xceed.Wpf.Toolkit.MessageBox.Show("Test Event");
}
}
XAML
<DataTemplate>
<StackPanel Orientation="Vertical">
<ListView x:Name="lvExport" ItemsSource="{Binding festItems}" SelectedItem="{Binding Selectedfest, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True" >
<ListView.View>
<GridView>
<GridViewColumn x:Name="test" Header="Data" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="20*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20*" />
</Grid.RowDefinitions>
<Image Width="75" HorizontalAlignment="Left" Source="Images/document.png" Grid.Column="0"/>
<StackPanel Orientation="Vertical" Grid.Column="1" Grid.ColumnSpan="2">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="Display Name" HorizontalAlignment="Left" ></TextBlock>
<TextBlock Text="Twitter Handle" Grid.ColumnSpan="2" Margin="50,0,0,0"/>
</StackPanel >
<TextBlock Text="testdata" Height="80"></TextBlock>
<Image Source="Images/document.png" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Height="79"></Image>
</StackPanel>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem" >
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonOtherMatchDown" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
</StackPanel>
</DataTemplate>
型号:
class festViewModel : ToolViewModel
{
public festItem _selectedfest;
public festItem Selectedfest
{
get { return _selectedfest; }
set
{
if (_selectedfest != value)
{
_selectedfest = value;
RaisePropertyChanged("Selectedfest");
}
}
}
}
【问题讨论】:
-
我必须单击一个项目两次才能显示消息框