내가 생각은, 주석이 첨부 된 속성과 워크 플로우 정의에 저장됩니다. 워크 플로의 xaml에서 특수 효과가 보이는 모양은 다음과 같습니다.
<Sequence
xmlns:derp="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation"
derp:Annotation.AnnotationText="This is an annotation!">
다른 첨부 된 속성과 마찬가지로 참조하십시오. 그것을 제외하고. 해당 첨부 된 워크 플로 속성이 아닌 종속성 속성. 즉, 첨부 된 부동산 서비스와 Annotation class을 통해 작동합니다. ModelItem에서 주석 텍스트를 가져오고 설정하는 것은 간단합니다 (아래에서 다룹니다).
실제로 주석을 지원하는 것은 그리 어렵지 않습니다. UI가 쓰레기처럼 보이면 괜찮습니다. 빠르고 지저분한 구현입니다. UI에서
은, 주석 텍스트
<sap:WorkflowViewElement
x:Class="AnnotationSupport.MyActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:ann="clr-namespace:System.Activities.Presentation.Annotations;assembly=System.Activities.Presentation"
xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation"
x:Name="root"
MinWidth="100"
MinHeight="100">
<Grid Background="red">
<Grid.RowDefinitions>
<RowDefinition
Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Expander
IsExpanded="False">
<!-- HERE SHE BLOWS -->
<TextBox
Text="{Binding ModelItem.AnnotationText}" />
</Expander>
<TextBox
Grid.Row="1"
Text="{Binding ModelItem.Text}"
Margin="10" />
</Grid>
</sap:WorkflowViewElement>
때마다 다른 모든 재산과 같은 주석 텍스트 변경되면 ModelItem의하여 PropertyChanged 이벤트가 발생, 유지 및 편집에 대한 몇 가지 컨트롤을 추가 할 수 있습니다. 당신은 코드에서 그것을 잡고 싶다면, 가장 간단한 방법은 dynamic
에 ModelItem 캐스팅하는 것입니다
private void SetAnnotationLol(string newValue)
{
if(ModelItem != null)
((dynamic)ModelItem).AnnotationText = newValue;
}
이제, FX는 활동이처럼 당신이 좋은 UI를 만들려면 ... 음 ..
주석의 표시 및 편집을 처리하기 위해 사용자 정의 Adorner을 작성하겠습니다. 사실 처음 보는 것처럼 어렵지는 않습니다. 아직 수행하지 않았다면 여기 기회가 있습니다.
대단한 의지 - 시간을내어 주셔서 감사합니다. WPF 책을 여는 데 더 많은 시간을 할애해야 할 것 같습니다 (보통 열어서 떨리고 다시 닫으십시오!) –
@TobyCouchman 그다지 나쁘지 않습니다. 코드화 된 양식, html 및 wpf 및 wpf가 가장 좋습니다. 네, 학습 곡선이 있지만 StackOverflow가 있습니다! – Will