powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Повторно использовать Popup и binding
7 сообщений из 7, страница 1 из 1
Повторно использовать Popup и binding
    #39693891
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня фрагмент кода с Popup окном, внутри которого Grid с данными, несколько кнопок. Все биндится через ViewModel (данные для списка из модели, команды кнопок обрабатываются в самой ViewModel). Теперь нужно по сути повторить этот код для однотипных списков данных. То есть добавить еще несколько кнопок, по клику на которые будут показываться свои такие же окошки, но с другими данными. Как избежать в моем случае дублирования кода? Вынести в UserControl со своей ViewModel? Или?


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<StackPanel Margin="0,3,10,3">
  <ToggleButton Content="Район..." x:Name="DistrictButton"/>
  <Popup IsOpen="{Binding IsChecked, ElementName=DistrictButton}" StaysOpen="False">
    <Border Style="{StaticResource PopUpBorder}">
      <Grid Width="350" Height="500">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto"/>
          <ColumnDefinition/>
          <ColumnDefinition Width="75"/>
          <ColumnDefinition Width="75"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition/>
          <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <dxg:GridControl Grid.ColumnSpan="4" EnableSmartColumnsGeneration="True" ItemsSource="{Binding FilterModel.Districts}">
          <dxg:GridControl.Columns>
            <dxg:GridColumn Header="Наименование" Width="*">
              <dxg:GridColumn.CellTemplate>
                <DataTemplate>
                  <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding Data.IsChecked}" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="3,0,5,0"/>
                    <TextBlock Text="{Binding Data.Name}" HorizontalAlignment="Center"/>
                  </StackPanel>
                </DataTemplate>
              </dxg:GridColumn.CellTemplate>
            </dxg:GridColumn>
          </dxg:GridControl.Columns>
          <dxg:GridControl.View>
            <dxg:TableView/>
          </dxg:GridControl.View>
        </dxg:GridControl>
        <Button Grid.Row="1" Content="Выбрать все" Margin="0,10,0,0" Command="{Binding SelectAllDistrictsCommand}"/>
        <Button Grid.Row="1" Grid.Column="2" Content="ОК" Margin="0,10,0,0" Command="{Binding OKDistrictsCommand}"/>
        <Button Grid.Row="1" Grid.Column="3" Content="Отмена" Margin="5,10,0,0" Command="{Binding CancelDistrictsCommand}"/>
      </Grid>
    </Border>
  </Popup>
</StackPanel>


...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39693903
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1,
Это же отдельное окно форма справочник которое ты можешь вызвать из любого места.
Так?
...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39694014
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, в общем - да. Можно создать обычное окно со своей VM и при клике на кнопку создавать его, передавая список значений и т.п. Надо только убрать строку заголовка и научиться выводить его сверху/снизу кнопки как это автоматом делает попап.
А хотелось бы, если это просто, сделать именно Popup и средствами XAML (шаблоны и т.п.) добиться нужно результата. Понять как это делается.
...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39694037
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Popup по сути, это примитив. То есть использовать его стоит в качестве части шаблона элемента управления, а не как независимый элемент управления. В шаблона обычно всё биндится через TemplateBinding, а содержимое передается через DataTemplate'ы.
...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39694072
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно была тема, в которой как раз был вариант решения, как раз на основе с Popup и ToggleButton, и как раз в виде шаблона контрола (комбобокса) с привязками данных через TemplateBinding: 21635815
...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39694075
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Советую обратить внимание, как в примере по ссылке содержимое Popup завернуто в SystemDropShadowChrome. У Джоша Смита есть небольшая заметка про использование этого класса.
...
Рейтинг: 0 / 0
Повторно использовать Popup и binding
    #39694083
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesPopup по сути, это примитив. То есть использовать его стоит в качестве части шаблона элемента управления, а не как независимый элемент управления. В шаблона обычно всё биндится через TemplateBinding, а содержимое передается через DataTemplate'ы.а с гридом внутри это не тяжеловесно?
У грида обычно размер окна побольше папап комбобокса.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Повторно использовать Popup и binding
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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