gpt4 book ai didi

c# - TextBox 的 Win Rt 更改事件

转载 作者:行者123 更新时间:2023-11-30 23:14:36 25 4
gpt4 key购买 nike

我有一个显示 2 个集合的屏幕。在左侧,我显示了一个部分列表。默认情况下,选择第一部分。如果您单击另一个部分,则会改为选中该部分。在右侧,我列出了一对多关系中该部分的相关问题。

所以每个问题都属于一个部分,一个部分可以有 1 个到多个问题。

有些问题是必须有答案的,有些是可选的。为了方便用户找到所需的问题,答案文本框旁边会显示一个红色星号。当那个问题得到回答时,它就消失了。

此外,我需要为每个有未回答问题的部分显示一个星号。一旦他们都回答了,该部分的星号也会消失。

可视化树就是这种格式;SurveyPageViewModel - SurveyViewModel - SectionViewModel - QuestionViewModel

下面的代码显示了 QuestionViewModel(其中包含 answer 属性)并且 XAML 代码位于 DataTemplate 中,因此我认为没有办法在可视化树上更新该部分。

所以我的 answer 属性的(简化的)处理程序代码如下所示;

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>

我正在使用 Prism 和 EventAggregator 模式来更新位于不同 ViewModel 中的选定部分。现在,除了一个重要问题外,这行得通。我只想在页面加载后更新该部分。目前,此事件会在页面加载和答案更改时触发。我如何让它工作以便忽略负载?

最佳答案

I only want to update the section once the page is loaded. Currently this event is fired both when the page is loaded AND when the answer changes.

我会定义一个命令来在页面加载后激活更新

<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:InvokeCommandAction Command="{Binding ActivateCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>

以上需要 WinRT 上的 Behavior SDK(或 UWP 上的 NuGet package),或者您可以在代码隐藏中处理 Loaded 事件并将其中继到 ViewModel。

然后 ActivateCommand 应该设置 ViewModel 的 bool IsLoaded 成员,以便它可以在您的 IfQuestionSetCheckIfAnswered 方法中进行测试。

关于c# - TextBox 的 Win Rt 更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com