2009-09-22 25 views
21

Tôi có gì?Mục đã chọn bị mất kiểu khi tiêu điểm được di chuyển trong Hộp danh sách WPF

Tôi có một số ListBox được điền bằng các mục từ tệp XML. Được cung cấp DynamicResource cho Style thuộc tính và kích hoạt bằng văn bản cho IsSelected trong ItemContainerStyle.

Tôi muốn làm gì?

Tôi muốn giữ cho mục được chọn được đánh dấu ngay cả sau khi lấy tiêu điểm ra khỏi ListBox.

Tôi đang gặp phải vấn đề gì?

Khi tôi chọn một mục theo kiểu được chỉ định trong tác phẩm kích hoạt IsSelected. Nhưng, khi tôi di chuyển tiêu điểm ra khỏi hộp danh sách (nhấn tab hoặc bấm vào một số điều khiển khác) mục đã chọn sẽ mất phong cách của nó. Có cách nào để tôi có thể giữ lại kiểu mục đã chọn không?

Cảm ơn trước!

+0

Tại sao bạn lùi sửa đổi của tôi? – SLaks

+0

Rất tiếc !! đó là do nhầm lẫn. Lấy làm tiếc! – Vijay

+0

Xin chào, tôi đang gặp phải sự cố tương tự và đã thử giải pháp được đăng nhưng tôi không thể giải quyết được vấn đề. Bạn có thể chỉnh sửa bài đăng của mình để nó chứa giải pháp không? cảm ơn – jpsstavares

Trả lời

1

Nếu bạn chỉ thiết lập màu nền, hãy thử thay thế ControlBrush cho ListBox, theo this answer.

+1

Ok. Hãy để tôi thử. Cảm ơn! – Vijay

+1

Đây là một ý tưởng tồi - đối với người dùng bị tắt hình ảnh, điều này sẽ làm hỏng rất nhiều thứ - thanh cuộn và nút sẽ thay đổi để trở thành màu đánh dấu hiện tại (màu xanh dương theo mặc định) nút và thanh cuộn ListView chuyển sang màu xanh, rất tệ!). – BrainSlugs83

28

Câu trả lời được đề cập trong một số trường hợp sẽ giải quyết được vấn đề, nhưng không lý tưởng vì nó bị ngắt khi điều khiển bị tắt/chỉ đọc và nó cũng ghi đè các lược đồ màu, thay vì tận dụng chúng. Đề xuất của tôi là thêm thông tin sau vào thẻ ListBox:

<ListBox....> 
    <ListBox.Resources> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Border Name="Border" Padding="2" SnapsToDevicePixels="true"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="true"> 
            <Setter TargetName="Border" Property="Background" 
              Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 

Điều này sẽ làm là đặt màu nền nổi bật trên mục hộp danh sách bất cứ khi nào được chọn (bất kể trạng thái điều khiển).

câu trả lời của tôi là dựa vào sự giúp đỡ từ các câu trả lời đã được trao cho những câu trả lời, cùng với các blog sau đây: http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx

+0

cách tiếp cận này hoạt động tốt đẹp. cảm ơn! –

+0

Đây phải là câu trả lời được chấp nhận. – Rich

Các vấn đề liên quan