powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как в ListviewItem встроить lookup combobox
8 сообщений из 8, страница 1 из 1
Как в ListviewItem встроить lookup combobox
    #39707827
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Listview есть свой ItemSource в виде коллекции классов, которая имеет свойство-внешний ключ на некоторую другую коллекцию (статическую) классов. Как сделать так, чтобы внутри каждого айтема я мог выбирать деталь из второй коллекции. Получается, что у ComboBox'а уже другой ItemSource будет.
Если я сделаю свой userControl с ComboBox, заполнив данными из детальной (статической) коллекции и в selectedChanged буду получать id выбранного значения и подставлять в соответствующий элемент мастер-коллекции это нормальный подход? Наверняка есть более цивилизованные способы решения этого вопроса?
Заранее вбить в ComboBox значения не вариант.
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39707851
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, Екатеринбург,
не знаю насколько точно это по твоему вопросу, но вроде похожая проблема у меня была
ссылка
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39707910
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DataTemplate для ListViewItem'а, внутри DataTemplate - ComboBox, у которого ItemsSource ссылается на что нужно.
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39708109
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныDataTemplate для ListViewItem'а, внутри DataTemplate - ComboBox, у которого ItemsSource ссылается на что нужно.
Спасибо. Я так хотел попробовать. Но у меня не получилось достучаться из кода до ComboBox'а расположенного внутри DataTemplate по имени ни ComboBox'а, ни DataTemplate.
Код: xml
1.
2.
3.
4.
5.
6.
<DataTemplate x:Key="ParameterTemplate" x:Name="MyTemplate">
...
      <ComboBox x:Name="cbForceParamKind" ItemsSource="{Binding Path=ForceParamKinds}" ItemTemplate="{StaticResource cbTemplate}" SelectedIndex="0">
      </ComboBox>
...
</DataTemplate>


Как правильно обратиться к такому элементу, чтобы в динамике присвоить ему ItemSource?
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39708117
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургСон Веры ПавловныDataTemplate для ListViewItem'а, внутри DataTemplate - ComboBox, у которого ItemsSource ссылается на что нужно.
Спасибо. Я так хотел попробовать. Но у меня не получилось достучаться из кода до ComboBox'а расположенного внутри DataTemplate по имени ни ComboBox'а, ни DataTemplate.
Код: xml
1.
2.
3.
4.
5.
6.
<DataTemplate x:Key="ParameterTemplate" x:Name="MyTemplate">
...
      <ComboBox x:Name="cbForceParamKind" ItemsSource="{Binding Path=ForceParamKinds}" ItemTemplate="{StaticResource cbTemplate}" SelectedIndex="0">
      </ComboBox>
...
</DataTemplate>


Как правильно обратиться к такому элементу, чтобы в динамике присвоить ему ItemSource?
До комбобокса в темплете достукиваться не надо. Это в WPF не принято, и делается в самых крайних, и очень оргинальных случаях. Забудьте про доступ к контролам напрямую из прикладного кода. Вообще забудьте. В вашем случае ItemsSource у ComboBox'а в дататемплейте должен изменяться в модели, где определено свойство ForceParamKinds.
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39708172
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныВ вашем случае ItemsSource у ComboBox'а в дататемплейте должен изменяться в модели, где определено свойство ForceParamKinds.
Спасибо!
Если у меня коллекция определена статически в пространстве имен
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
namespace RDBLL.Common.Service
{
    public class ProgrammSettings
    {
       ...
        public static List<ForceParamKind> ForceParamKinds { get; set; } 
       ...
    }
}


то я прописываю в модели
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
xmlns:Setting="clr-namespace:RDBLL.Common.Service;assembly=BLL"
...
<Setting:ProgrammSettings x:Key="MySetting"/>...
...
<DataTemplate  x:Key="cbTemplate">
    <TextBlock Text="{Binding Path=Label}"></TextBlock>
</DataTemplate>
...
<ComboBox ItemsSource="{Binding Source={StaticResource MySetting.ForceParamKinds}}" ItemTemplate="{StaticResource cbTemplate}" SelectedIndex="0">
</ComboBox>


Но так не работает - отображается пустой список в комбобоксе. Как правильно заполнить?
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39708200
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений, ЕкатеринбургНо так не работает - отображается пустой список в комбобоксе. Как правильно заполнить?
Лично у меня это даже не запускается - вылетает при старте с ошибкой Resource MySetting.ForceParamKinds notfound.
Причина: вы ссылаетесь на ресурс MySetting, который является экземпляром класса ProgrammSettings. Этот экземпляр создается при первом обращении к статическому ресурсу MySetting. А далее вот здесь
Код: c#
1.
Binding Source={StaticResource MySetting.ForceParamKinds}


вы пытаетесь через экземпляр обратиться к статическому свойству класса, что в C# запрещено. Но поскольку биндиги в C# работают через рефлекшн, то они просто не находят нужного инстансного свойства, и из-за этого вылетает ошибка, что ресурс не найден.
А нужно использовать не StaticResourceExtension, а просто StaticExtension:
Код: xml
1.
<ComboBox ItemsSource="{Binding Source={x:Static Setting:ProgrammSettings.ForceParamKinds}}"
...
Рейтинг: 0 / 0
Как в ListviewItem встроить lookup combobox
    #39708212
Евгений, Екатеринбург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА нужно использовать не StaticResourceExtension, а просто StaticExtension:
Код: xml
1.
<ComboBox ItemsSource="{Binding Source={x:Static Setting:ProgrammSettings.ForceParamKinds}}"


Супер! - спасибо, теперь все работает. Где можно почитать про разницу?
авторА нужно использовать не StaticResourceExtension, а просто StaticExtension:
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как в ListviewItem встроить lookup combobox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]