EddieS
(Eddie)
January 30, 2024, 2:04am
1
Is possible to control the contents of one Combobox from another.
So that if the user selects an entry in one comboxbox then the other combobox list changes based on the selection?
Eg.
Combobox1 (user selects Option 1) → Combobox2 (list = 1,2,3)
Combobox1 (user selects Option 2) → Combobox2 (list = 4,5,6)
Hope this makes sense
Jean-Marc
(Jean-Marc Couffin)
January 30, 2024, 7:28am
2
Check out the colour splasher code. It is a bit convoluted but works that way for this script.
To keep it simpler, you could display the combo boxes in sequence as a first step
dosymep
(dosymep)
January 30, 2024, 12:17pm
3
Create OptionValue class
class OptionValue:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
Create Option class
class Option:
def __init__(self, name):
self._name = name
self._values = []
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
@property
def values(self):
return self._values
@option_values.setter
def values(self, value):
self._values = value
Create xaml file
<StackPanel>
<ComboBox
Width="150"
SelectedItem="{Binding Option}"
ItemsSource="{Binding Options}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox
Width="150"
ItemsSource="{Binding Option.values}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
1 Like
EddieS
(Eddie)
January 30, 2024, 9:52pm
4
I will look into it
Appreciate you assistance.
Thank you
1 Like
EddieS
(Eddie)
February 16, 2024, 3:27am
5
Been trying to understand how to incorporate this into my code… not having much luck unfortunately.
Trying to find example code of it’s implantation so I can study and understand how it goes together
dosymep
(dosymep)
February 21, 2024, 2:16pm
6
@EddieS , my button with bindings and MVVM
def Execute(self, parameter):
self.__view.Hide()
try:
self.__view_model.curve_element = self.__revit_repository.pick_element("Выберите линию.")
finally:
self.__view.show_dialog()
@notification()
@log_plugin(EXEC_PARAMS.command_name)
def script_execute(plugin_logger):
revit_repository = RevitRepository(document, __revit__)
if revit_repository.is_empty:
alert("Выберите помещения для нумерации", exitscript=True)
select_groups_window = SelectRoomGroupsWindow(revit_repository.room_groups)
select_groups_window.show_dialog()
if not revit_repository.get_filtered_rooms_by_group() or not select_groups_window.DialogResult:
script.exit()
main_window = MainWindow()
1 Like