2009-05-27 34 views
7

Tôi muốn tạo một chuỗi giao diện người dùng trong đó người dùng nhấp vào nút và bật một bảng điều khiển nhỏ bên dưới bằng nút và hộp văn bản và có thể là một danh sách nhỏ các mục. Hộp thoại không phải là phương thức và quan trọng hơn, nó chỉ biến mất khi bạn nhấp vào một nơi khác trong cửa sổ chính.Hộp thoại nổi không theo phương thức trong WPF

Ví dụ: khi bạn nhấp vào biểu tượng Dấu sao 'Ưa thích' trong Internet Explorer 7 hoặc bạn nhấp vào Dấu sao trong thanh vị trí trong Firefox hai lần và nó sẽ trả về hộp thoại trình chỉnh sửa dấu trang.

Cách sạch nhất để đạt được điều này là gì?

Tôi có nên sử dụng UserControl và sửa chữa hoàn toàn vị trí của nó khi nút được nhấp không? Nếu vậy, làm cách nào để ẩn khi người dùng nhấp vào một nơi khác?

Trả lời

13

Tôi muốn nói cách sạch nhất để thực hiện những gì bạn đang tìm kiếm là sử dụng Popup. Lớp Popup hiển thị một phần tử nổi phía trên phần còn lại của các phần tử trên màn hình, nhưng không có phương thức và có thể được cấu hình biến mất khi người dùng nhấp chuột ra khỏi nó - hoàn hảo cho hộp thoại không có phương thức của bạn. Lớp Popup có các thuộc tính cho phép bạn kiểm soát nơi nó hiển thị liên quan đến điều khiển khác (trong trường hợp của bạn, nút bạn muốn người dùng nhấn để mở cửa sổ bật lên).

Dưới đây là một ví dụ tất cả-XAML:

<Grid> 
    <ToggleButton HorizontalAlignment="Center" VerticalAlignment="Top" 
        x:Name="PopButton" Content="Pop"/> 
    <Popup Placement="Bottom" PlacementTarget="{Binding ElementName=PopButton}" StaysOpen="False" 
      IsOpen="{Binding ElementName=PopButton, Path=IsChecked, Mode=TwoWay}"> 
     <Rectangle Height="100" Width="200" Fill="Blue"/> 
    </Popup> 
</Grid> 

Bạn cũng có thể sử dụng lệnh hoặc xử lý sự kiện để mở/đóng cửa sổ bật lên từ mã.

Thuộc tính Vị trí và Vị tríTarget được đặt nơi cửa sổ bật lên xuất hiện và điều khiển nào sẽ xuất hiện tương ứng với (có các tùy chọn khác cho phép bạn xuất hiện tương ứng với vị trí hiện tại và tương đối so với con chuột). Thiết lập StaysOpen to False sẽ có WPF tự động đóng cửa sổ bật lên khi người dùng nhấp vào bên ngoài cửa sổ bật lên.

Theo mặc định, cửa sổ bật lên không có kiểu riêng - đó chỉ là vùng chứa cho nội dung nổi - vì vậy bạn sẽ phải tạo kiểu cho cửa sổ giống như cửa sổ chrome/toolbar/v.v. khi thích hợp.

+0

Đó chính xác là những gì tôi cần! Cảm ơn. –

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