Tôi cố gắng để tái tạo giao diện người dùng Mail từ Windows 8 trong một ứng dụng WPF chạy trên Windows 7. Dưới đây là những gì tôi muốn đạt được:Làm thế nào để thiết lập một màu sắc danh sách lựa chọn WPF?
Đặc biệt, tôi không biết làm thế nào để thay đổi màu nền cho các mục được chọn ví dụ mục Hộp thư đến trong cột đầu tiên và thư từ Twitter trong cột thứ hai. Tôi đã thử một số giải pháp từ khác Stackoverflow câu hỏi tương tự nhưng không ai có vẻ làm việc cho tôi. ví dụ.
Selected item loses style when focus moved out in WPF ListBox
WPF ListView Inactive Selection Color
Đây là mã tôi đã cho listview của tôi:
<ListView Grid.Row="0" SelectedItem="{Binding Path=SelectedArea}" ItemsSource="{Binding Path=Areas}" Background="#DCE3E5" >
<ListView.Resources>
<!-- Template that is used upon selection of an Area -->
<ControlTemplate x:Key="SelectedTemplate" TargetType="ListViewItem">
<Border Background="#388095" Cursor="Hand" >
<TextBlock Text="{Binding Name}" Margin="5" />
</Border>
</ControlTemplate>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<!-- Base Template that is replaced upon selection -->
<ControlTemplate TargetType="ListViewItem">
<Border Background="#DCE3E5" Cursor="Hand" >
<TextBlock Text="{Binding Name}" Margin="5" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" />
</MultiTrigger.Conditions>
<Setter Property="Template" Value="{StaticResource SelectedTemplate}" />
</MultiTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
</ListView>
Làm thế nào tôi có thể thay đổi màu nền của mục đã chọn? Và làm cách nào để giữ lại thay đổi màu khi tiêu điểm thay đổi.
Cảm ơn @TrueEddie. Máy của tôi đang hoạt động và tôi không thể kiểm tra giải pháp của bạn. Tôi sẽ quay lại ngay sau khi tôi có thể sửa máy của tôi. – Yasir
Điều này cho biết lựa chọn đúng cách. Nhưng bây giờ chúng ta đang sử dụng TextBlock thay vì siêu liên kết mà tôi đang sử dụng, tôi không thể cung cấp Lệnh mà tôi cần gọi nữa. Làm thế nào tôi có thể cung cấp lệnh và tham số liên quan? Khi tôi thay thế phần tử Border của bạn bằng siêu liên kết, nó cho phép tôi thay đổi màu sắc khi được nhấp bên ngoài siêu liên kết nhưng không cho phép tôi gọi lệnh. Khi tôi nhấp vào siêu liên kết, nó cho phép tôi inovke lệnh nhưng màu sắc không thay đổi. – Yasir
Tôi đã chỉnh sửa câu trả lời ở trên. – TrueEddie