2 개의 모음을 보여주는 화면이 있습니다. 왼쪽에는 섹션 목록이 표시됩니다. 기본적으로 첫 번째 섹션이 선택됩니다. 다른 섹션을 클릭하면 해당 섹션이 선택됩니다. 오른쪽에는 일대 다 관계에서 해당 섹션에 대한 관련 질문 목록이 있습니다.텍스트 상자의 Win Rt 변경 이벤트
그래서 각 질문은 섹션에 속하며 섹션에는 1에서 많은 질문을 가질 수 있습니다.
일부 질문에는 대답이 있어야하며 일부 대답은 선택 사항입니다. 사용자가 필요한 질문을 쉽게 찾을 수 있도록 응답 텍스트 상자 옆에 빨간색 별표가 표시됩니다. 그 질문에 답이 생기면 그 질문은 사라집니다.
또한 답이없는 질문이있는 각 섹션에 별표를 표시해야합니다. 그들이 모두 응답하면 섹션에 대한 별표도 사라집니다.
시각적 트리는이 형식입니다. SurveyPageViewModel - SurveyViewModel - SectionViewModel - QuestionViewModel
아래 코드는 (포함 응답 특성)을 QuestionViewModel와 XAML 코드를 보여줍니다 그래서 나는 생각하지 않는다 섹션을 업데이트하는 방법까지 시각적 트리가 DataTemplate이에 .
내 대답 속성에 대한 내 (단순화 된) 처리기 코드는 다음과 같습니다.
private string _answer;
public string Answer
{
get
{
return _answer;
}
set
{
if (SetProperty(ref _answer, value))
{
this.IfQuestionSetCheckIfAnswered(this.IsRequiredOnScreenAnswer);
}
}
}
private void IfQuestionSetCheckIfAnswered(bool value)
{
if (this.IsRequired && string.IsNullOrWhiteSpace(this.Text) == false)
{
this.EventAgg.GetEvent<RequiredAnswerUpdatedEvent>().Publish(value);
}
}
및 XAML (질문/답변);
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0" Margin="0, 0, 0, 5">
<TextBox Grid.Row="1"
Text="{Binding Path=Answer, Mode=TwoWay}"
MinWidth="300"
IsReadOnly="{Binding Path=IsReadOnly}" />
<TextBlock Text="*" FontSize="40" FontWeight="Bold"
Style="{StaticResource ResourceKey=RequiredSignal}" Margin="5, 0, 0, 0"
Visibility="{Binding Path=IsRequiredOnScreenAnswer, Converter={StaticResource ResourceKey=BooleanToVisibilityConverter}}" />
</StackPanel>
내가 다른 뷰 모델에 선택한 섹션을 업데이트 프리즘과 EventAggregator 패턴을 사용하고 있습니다. 이제는 중요한 한 가지 문제를 제외하고는 작동합니다. 페이지가로드 된 후에 만 섹션을 업데이트하려고합니다. 현재이 이벤트는 페이지가로드되고 응답이 변경 될 때 발생합니다. 로드가 무시되도록하려면 어떻게해야합니까?
상호 작용 : WinRT에서 Interaction.Behaviors가 지원되지 않습니다. – arame3333
아마이 sdk가 필요합니다.이 [답변] (https://social.msdn.microsoft.com/Forums/windowsserver/en-US/29c709d8-6ddb)에서 찾으십시오. -4e19-b8c2-6a035b1bcb41/uwpwill-be-a-be-a-behaviour-sdk-to-support-eventtriggerbehavior-invokecommandaction 포럼 = wpdevelop) ... –
아니면 그냥 코드에서'Loaded' 이벤트를 처리하고 이벤트를 릴레이합니다. 뷰 모델에? –