powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как сделать кнопочку со стрелочкой, в BomboBox побольше?
9 сообщений из 9, страница 1 из 1
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38655853
SNenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форма используется на моноблоке(вводят пальцами на экране).

Там существует компонент ComboBox.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 <ComboBox
            Grid.Column="3"
            Grid.Row="5"
            Foreground="#FFDFFF00"
            HorizontalAlignment="Stretch"
            Margin="0"
            Name="tbChemicalName"
            VerticalAlignment="Stretch"
            KeyDown="cb1_KeyDown"
            IsEditable="True"
            Grid.RowSpan="1"
            VerticalContentAlignment="Bottom"
            HorizontalContentAlignment="Stretch"
            FlowDirection="LeftToRight"
            DataContext="{Binding}"
            Text=""
            IsTextSearchEnabled="False"
            IsHitTestVisible="True"
            MaxDropDownHeight="150"
            >



На элементе него маленькая стрелочка выпадающего списка(люди мажут). Как сделать кнопочку со стрелочной побольше?
Такой вариант растягивает весь компонент, ято недопустимо.
Код: xml
1.
2.
3.
<ComboBox.LayoutTransform>
                <ScaleTransform ScaleX="3" ScaleY="1" />
            </ComboBox.LayoutTransform>



Спасибо за внимание!
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38655873
SNenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38656069
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNenko,

переопредели шаблон у ComboBox
ComboBox.Template или задай размер кнопки через стили, кнопка там ToggleButton
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38656087
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNenko,
пример:

Код: 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.
40.
41.
42.
43.
<ComboBox Grid.Row="0">
            <ComboBox.Template>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>

                        <TextBox IsReadOnly="True" Grid.ColumnSpan="2" Text="{Binding SelectedValue, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"/>

                        <ToggleButton Width="100" Height="100" Grid.Column="1" Margin="0,2,2,2"  ClickMode="Press" Focusable="False"
                                         IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                            <Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 0 L 4 4 L 8 0 Z" >
                                <Path.Fill>
                                    <SolidColorBrush Color="Black"/>
                                </Path.Fill>
                            </Path>
                        </ToggleButton>
                        <Popup x:Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Slide">
                            <Grid x:Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}" MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                <Border x:Name="DropDownBorder" BorderThickness="1">
                                    <Border.BorderBrush>
                                        <SolidColorBrush Color="{TemplateBinding BorderBrush}" />
                                    </Border.BorderBrush>
                                    <Border.Background>
                                        <SolidColorBrush Color="White" />
                                    </Border.Background>
                                </Border>
                                <ScrollViewer Margin="4,6,4,6"
                            SnapsToDevicePixels="True">
                                    <StackPanel  IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained">
                                        <StackPanel.Resources>
                                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#009DDB"/>
                                        </StackPanel.Resources>
                                    </StackPanel>
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                    </Grid>
                </ControlTemplate>
            </ComboBox.Template>
        </ComboBox>
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38656131
SNenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,
Спасибо прибольшое!
Буду разбирать Ваш код и учиться))
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38656958
SNenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SNenko,
Возвращаясь к теме.
При попытке ссылаться на tbChemicalName, не могу ни получить ни изменить програмно tbChemicalName.Text!
После Введения клавиатурой такста, праграма говорит что поле пустое он остается пустым

Как мне это исправить.

Код: c#
1.
2.
3.
4.
5.
6.
private void tbChemicalNumber_KeyDown(object sender, KeyEventArgs e)
{
    this.tbChemicalName.Text = "";
    if (e.Key.ToString() == "Return")
        this.btnMSDS_Click(sender, e);
}



Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
        <ComboBox
            Grid.Column="3"
            Grid.Row="5"
            Foreground="#FFDFFF00"
            HorizontalAlignment="Stretch"
            Margin="0"
            Name="tbChemicalName"
            VerticalAlignment="Stretch"
            KeyDown="cb1_KeyDown"
            IsEditable="True"
            Grid.RowSpan="1"
            VerticalContentAlignment="Bottom"
            HorizontalContentAlignment="Stretch"
            FlowDirection="LeftToRight"
            DataContext="{Binding}"
            IsHitTestVisible="True"
            MaxDropDownHeight="150"
            IsTextSearchEnabled="False"
            >

            <ComboBox.Template>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>

                        <TextBox TextWrapping="Wrap"
                                 Text="{Binding SelectedValue, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"/>
                        
                        <ToggleButton Width="50" Grid.Column="1" Margin="0,2,2,2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                            <Path HorizontalAlignment="Center" VerticalAlignment="Center"  Data="M 0 0 L 4 4 L 8 0 Z">
                                <Path.Fill>
                                    <SolidColorBrush Color="#FF284FA9"/>
                                </Path.Fill>
                            </Path>
                        </ToggleButton>

                        <Popup x:Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Slide">
                            
                            <Grid x:Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}" MaxHeight="{TemplateBinding MaxDropDownHeight}">

                                <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
                                    <StackPanel Background="#FF284FA9" IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained">
                                        <StackPanel.Resources>
                                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"/>
                                        </StackPanel.Resources>
                                    </StackPanel>
                                </ScrollViewer>
                                
                            </Grid>
                            
                        </Popup>

                    </Grid>
                </ControlTemplate>
            </ComboBox.Template>

        </ComboBox>


Как получать данные из такого комбобокса?
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38657022
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замените
Код: xml
1.
2.
<TextBox TextWrapping="Wrap" Text="{Binding SelectedValue, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"/>
 


На
Код: xml
1.
<TextBox x:Name="PART_EditableTextBox" TextWrapping="Wrap"/>



Ну для popup тоже желательно дать название <Popup x:Name="PART_Popup"

Источник: Стили и шаблоны элемента ComboBox

Сам еще не до конца понял почему ваш вариант не работает, но это первое, что я проверил. Просто в коде самого элемента управления (ComboBox в данном случае) элементы, помеченные PART_ могут использоваться, а когда их нет, то элемент управления может работать неправильно.
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38657211
SNenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@k@DElpher,
Странно но после добавления "PART_", ЗАРАБОТАЛО!

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
        <ComboBox
            Grid.Column="3"
            Grid.Row="5"
            Foreground="#FFDFFF00"
            HorizontalAlignment="Stretch"
            Margin="0"
            Name="PART_tbChemicalName"
            VerticalAlignment="Stretch"
            KeyDown="cb1_KeyDown"
            IsEditable="True"
            Grid.RowSpan="1"
            VerticalContentAlignment="Bottom"
            HorizontalContentAlignment="Stretch"
            FlowDirection="LeftToRight"
            DataContext="{Binding}"
            IsHitTestVisible="True"
            MaxDropDownHeight="150"
            IsTextSearchEnabled="True"
            IsDropDownOpen="False"
            ItemsSource="{Binding}"
            TabIndex="1">

            <ComboBox.Template>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>

                        <TextBox x:Name="PART_EditableTextBox" TextWrapping="Wrap"/>
                        
                        <ToggleButton Width="50" Grid.Column="1" Margin="0,2,2,2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                            <Path HorizontalAlignment="Center" VerticalAlignment="Center"  Data="M 0 0 L 4 4 L 8 0 Z">
                                <Path.Fill>
                                    <SolidColorBrush Color="#FF284FA9"/>
                                </Path.Fill>
                            </Path>
                        </ToggleButton>

                        <Popup x:Name="PART_Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Slide">
                            
                            <Grid x:Name="DropDown" SnapsToDevicePixels="True" MinWidth="{TemplateBinding ActualWidth}" MaxHeight="{TemplateBinding MaxDropDownHeight}">

                                <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
                                    <StackPanel Background="#FF284FA9" IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained">
                                        <StackPanel.Resources>
                                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"/>
                                        </StackPanel.Resources>
                                    </StackPanel>
                                </ScrollViewer>
                                
                            </Grid>
                            
                        </Popup>

                    </Grid>
                </ControlTemplate>
            </ComboBox.Template>

        </ComboBox>



СПАСИБО!
...
Рейтинг: 0 / 0
Как сделать кнопочку со стрелочкой, в BomboBox побольше?
    #38657564
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SNenko@k@DElpher,
Странно но после добавления "PART_", ЗАРАБОТАЛО!
Ну это такая принятая практика при проектировании контролов. У контрола есть:
Исходный код *.cs и Generic.xaml - стиль по умолчанию.
В данном случае вы стиль по умолчанию переопределили на свой.
Есть соглашение, что если в исходном коде контрола напрямую используются визуальные элементы (меняются их свойства из кода), то эти элементы стоит помечать названием "PART_". У комбобокса есть две такие части, без них он просто работает не так, как его задумывал разработчик.
http://professorweb.ru/my/WPF/Template/level17/template_index.php - вот можно попробовать тут об этом почитать (если не хочется более серьезную книгу читать). Про части "PART_" начинается с главы "Построение сложного шаблона"
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как сделать кнопочку со стрелочкой, в BomboBox побольше?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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