Я искал в Интернете, но мой поисковый запрос не должен работать, если он там есть, потому что я просто не могу найти правильные условия поиска, чтобы получить ответ, который я ищу. Поэтому я обращаюсь к экспертам в качестве последнего средства, чтобы указать мне правильное направление.
То, что я пытаюсь сделать, это создать комбинированный элемент управления для текстового поля и списка, но я хочу позволить потребителю элемента управления решать, что делать, когда флажок установлен / снят, а я просто не могу понять это ... Может быть, я все делаю не так.
То, что я до сих пор делал, это:
- создать пользовательский элемент управления, расширяющий ListBox
- выставить пользовательский DP с именем «Текст» (для текстового поля, но это не важная часть)
- создайте файл generic.xaml, чтобы элементы списка имели элемент по умолчанию ItemTemplate / DataTemplate.
- внутри DataTemplate Я пытаюсь установить события "Проверено" или "Не проверено"
- представляет события «обертки» как DP в пользовательском элементе управления, которые будут «установлены» через шаблон при установке
Как только я попробую что-то вроде следующего (внутри generic.xaml):
<DataTemplate>
<...>
<CheckBox Checked="{TemplateBinding MyCheckedDP}"/>
<...>
</DataTemplate>
Я получаю исключения во время выполнения, дизайнер - vs2010 - вытаскивает длинный список ошибок, которые очень похожи, и ничто из того, что я делаю, не может заставить его работать.
Я зашел так далеко, что попытался использовать VisualTreeHelper, но ни одна волшебная комбинация, которую я смог найти, не сработала бы и не позволила бы мне пройти по дереву, потому что когда метод OnApplyTemplate запускает элементы списка, они еще не существуют и не в дереве.
Так что, надеюсь, все это имеет смысл, но если нет, пожалуйста, дайте мне знать, и я отредактирую пост для разъяснений.
Спасибо всем за любые указания или мысли ... Как я уже сказал, может быть, я с самого начала об этом говорю не так ...
РЕДАКТИРОВАТЬ (Запрос на xaml)
шаблонная таблица generic.xaml:
<DataTemplate >
<StackPanel Orientation="Horizontal" >
<local:FilterCheckbox x:Name="chk">
<TextBlock Text="{Binding Path=Display}" />
</local:FilterCheckbox>
</StackPanel>
</DataTemplate>
usercontrol.xaml (вызов пользовательского элемента управления)
<local:MyControl FancyName="This is the fancy name"
ItemChecked="DoThisWhenACheckboxIsChecked" <-- this is where the consumer "ties" to the checkbox events
ItemsSource="{Binding Source={StaticResource someDataSource}}"
/>