在我的listview裏面我創建了一個控件模板。在這個模板中,我製作了一個按鈕,以便列表視圖中的每個項目都有一個按鈕。該按鈕代表一個打開顯示的目錄的鏈接。當我點擊按鈕時,我的程序就像我期望的那樣打開瀏覽器。但是當我點擊一個未被選中的項目的按鈕時,它會打開所選項目的路徑。所以我的問題是,當我點擊列表視圖中的按鈕時,如何更改所選項目。如何在點擊按鈕時選擇listview項目
這裏是如何看起來像:
正如你可以看到「R1」被選中,但我點擊「R3」的鏈接。會發生什麼,C:\ Temp \ Folder1被打開,因爲「R1」仍然是selecteditem。我想要的是C:\ Temp \ Folder3獲得opend。我認爲訣竅應該是當點擊表示鏈接的按鈕時選擇「R3」。有誰知道如何做到這一點?
這是我的XAML碼:
<ListView Grid.Row="1" ItemsSource="{Binding MyCollection}" FontSize="20" SelectedItem="{Binding SelectedMember, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="7,10,7,0" x:Name="ListView1" SelectionChanged="ListView1_SelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn Header="Header 1" Width="150"/>
<GridViewColumn Header="Header 2" Width="120"/>
<GridViewColumn Header="Header 3" Width="120"/>
<GridViewColumn Header="Header 4" Width="560"/>
<GridViewColumn Header="Header 5" Width="100"/>
</GridView>
</ListView.View>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<EventSetter Event="MouseDoubleClick" Handler="ListViewItem_MouseDoubleClick"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="560"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0" Content="{Binding ID}" HorizontalAlignment="Center"/>
<ContentPresenter Grid.Column="1" Content="{Binding Name}" HorizontalAlignment="Center"/>
<ContentPresenter Grid.Column="2" Content="{Binding Description}" HorizontalAlignment="Center"/>
<Button Grid.Column="3" Content="{Binding Path}" Style="{StaticResource Link}" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.GoToPathCommand }" HorizontalAlignment="Left" Margin="5,0,0,0" IsEnabled="{Binding ButtonEnabled}"/>
<ContentPresenter Grid.Column="4" Content="{Binding Owner}" HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="DarkBlue"/>
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
</ListView>
這幾乎是我正在尋找,但它會導致另一個問題。點擊該按鈕即可正常工作。但是當我選擇「R1」並點擊「接受」按鈕時,所選項目的焦點就會丟失。 – L4c0573