Я работаю над приложением WPF (.NET 4.5) и с использованием Caliburn.Micro
. Я генерирую список вопросов и ответов в ответах ListBox
, которые могут быть из 3-х типов (RadioButtons, DropDowns и текстовые поля). Когда на вопрос ответят, свойства триггеров меняются в ViewModel, и добавляется следующий вопрос.
Проблема, с которой я столкнулся, - это когда символ добавляется к Textbox
, он немедленно запускает изменение свойства.Настройка WPF Задержка с кодом в MVVM
public string TextValue
{
get { return _textValue; }
set
{
_textValue = value;
NotifyOfPropertyChange(() => TextValue);
}
}
Обычно (для не динамически создаваемых элементов управления) я мог бы задержать его с помощью «нового»
<TextBlock Text="{Binding TextValue, Delay=500}"/>
, но так как я генерируя эти вопросы я не уверен в том, как действовать с этим ,
Есть ли способ установить Delay
сгенерированный элемент управления из кода позади?
UPDATE:
это как XAML выглядит. Список заполняется вопросами о времени выполнения (от БД), и вопросы меняются в зависимости от предыдущих ответов, поэтому нет способа установить что-либо в XAML.
<UserControl x:Class="Corp.Conveyancing.Desktop.Views.Probate.PifWFlowQuestionsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:probate="clr-namespace:Corp.Conveyancing.Desktop.Views.Probate"
mc:Ignorable="d" >
<Grid Margin="10" Width="600" Height="400" >
<ListBox x:Name="QuestionItems" Grid.Row="0" BorderThickness="0" HorizontalContentAlignment="Stretch" ScrollViewer.CanContentScroll="true" ScrollViewer.VerticalScrollBarVisibility="Visible" Height="380" Width="580" probate:ListBoxExtenders.AutoScrollToEnd="True" >
<ListBox.ItemContainerStyle >
<Style TargetType="ListBoxItem">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</Grid>
</UserControl>
UPDATE2:
Я имею BindableCollection<QuestionItemViewModel>
что недвижимость в PifWFlowQuestionsViewModel
, к которому я добавляю только первый вопрос, а затем на основе ответа я добавляю больше вопросов, нный, основываясь на тех, добавляя все больше и так далее ,
public class PifWFlowQuestionsViewModel : PropertyChangedBase
{
private BindableCollection<QuestionItemViewModel> _questionItems =
new BindableCollection<QuestionItemViewModel>();
public BindableCollection<QuestionItemViewModel> QuestionItems
{
get { return _questionItems; }
set
{
_questionItems = value;
NotifyOfPropertyChange(() => QuestionItems);
}
}
}
Как вы создаете элементы для ListBox? Введите вывод и datatemplates или вручную создайте элементы управления с помощью кода? – toadflakz
@toadflakz У меня есть 'BindableCollection', который является свойством в 'PifWFlowQuestionsViewModel', к которому я добавляю только первый вопрос, а затем на основе ответа. Я добавляю больше вопросов, на основе тех, которые добавляют больше и так далее. –
* Проблема, с которой я столкнулся, - это когда символ добавляется в текстовое поле, он немедленно вызывает изменение свойств * ... почему это проблема? – Sheridan