2012-09-19 21 views
5

Trong khi đọc về DataTrigger trên MSDN, nó nóiTrình kích hoạt/DataTrigger có trở về trạng thái trước đó nếu nó không còn đúng trong WPF không?

Đại diện cho một kích hoạt áp dụng giá trị tài sản hoặc thực hiện các hành động khi dữ liệu bị ràng buộc đáp ứng một điều kiện nhất định.

Nó có nghĩa

Khi kích hoạt là đúng nó thay đổi giá trị với giá trị mong muốn.

Nhưng, điều này có thể được suy ra không?

Khi nó không còn đúng thì trả về giá trị cho giá trị trước đó.


Làm thế nào tôi đi đến kết luận này

Tôi đã làm điều này

<Style x:Key="fd" TargetType="SomeControl"> 
<Setter Property="Control.Template"> 
    <Setter.Value> 
    <ControlTemplate> 
    <Button Content="Foo" x:Name="mybutton"> 
    <ControlTemplate.Triggers> 
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=FooProperty}" 
        Value="Collapsed"> 
     <Setter Property="IsEnabled" Value="False" TargetName="mybutton"/> 
     <Setter Property="Opacity" Value="0.5" TargetName="mybutton"/> 
    </DataTrigger> 
    </ControlTemplate.Triggers> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 
</Style> 

Khi FooProperty bị sụp đổ nó thay đổi myButton của IsEnabled-FalseOpacity-0.5

Bây giờ, khi FooProperty hiển thị, nó sẽ thay đổi số IsEnabled của mybutton thành TrueOpacity thành 1 mặc dù tôi chưa viết bất kỳ trình kích hoạt nào để hoàn nguyên về giá trị trước đó.

Đây có phải là tính năng sẵn có của DataTrigger để hoàn nguyên về giá trị trước đó Khi nó không còn đúng không?

Nếu có, có tài liệu Microsoft/MSDN nào để chứng minh điều này không?

Trả lời

4

Điều bạn nói, là chính xác.

Đối doc thực tế để chứng minh điều này, tìm kiếm từ đây:

http://msdn.microsoft.com/en-us/library/ms745683.aspx

http://msdn.microsoft.com/en-us/library/system.windows.trigger.aspx

"phần chú thích"

WPF định nghĩa các thuộc tính tương ứng với người dùng cuối hành động, chẳng hạn như thuộc tính IsMouseOver được đặt thành true khi người dùng di chuyển con trỏ trên một UIElement hoặc thuộc tính IsMouseOver tương ứng của một ContentElement. Đại diện cho hành động của người dùng cuối trong giá trị thuộc tính, cùng với phần tử Kích hoạt, cho phép các kiểu WPF thay đổi thuộc tính giá trị dựa trên các hành động của người dùng cuối đó, tất cả từ trong đánh dấu.

Các thuộc tính được thay đổi bởi trình kích hoạt sẽ tự động được đặt lại về giá trị trước đó khi điều kiện kích hoạt không còn hài lòng. Trình kích hoạt được tối ưu hóa cho các trạng thái tạm thời được mong đợi là thay đổi và trở về trạng thái ban đầu, chẳng hạn như IsPressed trên Nút và IsSelected trên ListBoxItem. Bất động sản quan tâm phải là một tài sản phụ thuộc .

Lưu ý rằng bạn phải chỉ định cả thuộc tính Giá trị và Thuộc tính trên Trình kích hoạt để trình kích hoạt có ý nghĩa. Nếu một hoặc cả hai thuộc tính không được đặt, ngoại lệ sẽ được ném.

chúc may mắn :)

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