2009-06-02 38 views
5

Nếu tôi có một BooleanAnimation đặt thuộc tính, thuộc tính đó sẽ bị khóa và không thể thay đổi bằng bất kỳ phương tiện nào khác.Boolean Animation khóa thuộc tính

Ví dụ:

<EventTrigger 
    SourceName="myButton" 
    RoutedEvent="Button.Click"> 
    <EventTrigger.Actions> 
     <BeginStoryboard> 
      <Storyboard> 
       <BooleanAnimationUsingKeyFrames 
        Storyboard.TargetName="myCheckBox" 
        Storyboard.TargetProperty="IsChecked" 
        FillBehavior="HoldEnd"> 
        <DiscreteBooleanKeyFrame 
         KeyTime="00:00:00" 
         Value="False" /> 
       </BooleanAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger.Actions> 
</EventTrigger> 

Trong ví dụ này, nếu nút được nhấp vào hộp kiểm được thiết lập để sai, tuy nhiên, nếu người dùng cố gắng để kiểm tra lại hộp kiểm vào hộp kiểm là không phản hồi. Thuộc tính IsChecked không thể được thiết lập thông qua mã hoặc (sau khi nút đã được nhấp).

Tôi có thể tạo một hoạt ảnh khác sẽ cập nhật Hộp kiểm, nhưng đó không phải là hành vi mà tôi yêu cầu.

Tôi cũng đã thử FillBehavior = "Dừng", nhưng điều đó chỉ làm cho Hoạt ảnh không hoạt động.

Trả lời

6

Hộp kiểm vẫn đang được đặt nhưng hoạt ảnh vẫn đang chạy, đó là lý do tại sao nó có vẻ không được chọn. Có một vài cách mà điều này có thể được cố định để các hình ảnh động không còn kiểm soát tài sản trên hộp kiểm. Cuộc phỏng vấn tổng quan MSDN Animation về những gì sẽ xảy ra khi hoạt ảnh kết thúc. Và how to set a Property after animating it with a Storyboard đi qua một số tùy chọn khác.

+1

Ok, vâng, tôi thấy cách hoạt ảnh hiện đang hoạt động. Thật không may, điều này có nghĩa rằng tôi không thể thiết lập một tài sản với một EventTrigger, trừ khi tôi khóa tài sản đó bằng cách sử dụng "HoldEnd". Liên kết cho "cách đặt thuộc tính sau khi tạo hoạt ảnh bằng Bảng phân cảnh", sẽ chỉ hoạt động khi có sẵn mã sau. Đối với trường hợp cụ thể này, tôi đang cố gắng giữ trong XAML vì nó là một điều khiển tùy chỉnh. Tôi sẽ tạo một câu hỏi mới. –

1

thay

FillBehavior = "HoldEnd"

với

Thời gian = "00:00:01" FillBehavior = "Stop"

và nó sẽ hoạt động :-)

+2

Đó không phải là câu trả lời (hoàn chỉnh). FillBehavior of Stop sẽ ngăn chặn thuộc tính đang bị khóa, nhưng cũng đặt lại thuộc tính về giá trị ban đầu trước khi hoạt ảnh. Đôi khi, bạn có thể giải quyết vấn đề này bằng cách cài đặt thủ công giá trị mong muốn khi bảng phân cảnh hoàn thành. – Jowen

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