Я новичок в WPF и новичок в Caliburn.Micro.
Я пытаюсь создать комбинированный список динамически.
По сути, я пытаюсь создать текстовое поле с автозаполнением, но я не могу понять, как динамически создать комбинированный список или присоединиться к комбинированному списку, который уже находится в xaml, чтобы я мог изменить его свойства. 1001 *
Мой XAML выглядит следующим образом:
<StackPanel>
<TextBox x:Name="customerNameTxt" Width="150" HorizontalAlignment="Stretch" cal:Message.Attach="[Event TextChanged]=[customerNameTxt_TextChanged()]" />
<ComboBox Height="20" HorizontalAlignment="Left" Name="comboBox1" VerticalAlignment="Top"
ItemsSource="{Binding DropDownSource, Mode=TwoWay}" />
</StackPanel>
Как вы можете видеть, я обязуюсь заполнить поле со списком - у меня это отлично работает, а также меняется, когда пользователь вводит текстовое поле.
Я просто хотел бы либо изменить свойства в комбинированном ящике, либо создать его динамически, что затем дало бы мне доступ ко всем нужным мне свойствам.
Я использую Caliburn.micro, поэтому мне нужно получить в выпадающем списке файл ShellModelView.cs.
Любая помощь с этим была бы великолепна.
ОБНОВЛЕНИЕ: Благодаря идее попробовать использовать WPFToolkit AutoCompleteBox. Мне удалось заставить это работать довольно легко, и это здорово, за исключением того, что теперь код, который у меня был в моей ViewModel, больше не извлекает значение AutoCompleteBox, используя Caliburn.micro. После небольшой игры я понял это - я не уверен, что это правильный способ сделать это, но это работает для меня. Если это не лучший метод, мне было бы интересно услышать о других способах сделать это.
Вот мой XAML:
<toolkit:AutoCompleteBox x:Name="customerNameTxt" ItemsSource="{Binding DropDownSource}" IsTextCompletionEnabled="True" Grid.Row="0" Grid.Column="2" cal:Message.Attach="[Event SelectionChanged]=[Action customerNameTxt_SelectionChanged($eventargs)]" />
Вот моя ViewModel:
public void customerNameTxt_SelectionChanged(SelectionChangedEventArgs e)
{
BindObj obj = e.AddedItems[0] as BindObj;
if (null != obj)
{
customerNameTxt = obj.Text;
}
}
Теперь мое свойство customerNameTxt установлено так, как было раньше.
Любые советы по лучшим методам будут великолепны. Как я уже сказал, я новичок в этом материале WPF, поэтому все еще многому учусь.
Спасибо
Mudders