首页 > 解决方案 > 按钮和更改滚动界面中的WPF组合框,数据绑定到自定义?喜欢这张上传图片

问题描述

此型号

public class Media
{
    private List<string> mediaName;

    public List<string> MediaName
    {
        get { return mediaName; }
        set { mediaName = value; }
    }

}

这个xml代码

<ComboBox x:Name="MediaCombo" ItemsSource="{Binding Media}" SelectionChanged="MediaCombo_SelectionChanged">
  <ComboBox.ItemTemplate>
    <DataTemplate>
     <TextBlock Text="{Binding}" />
    </DataTemplate>
  </ComboBox.ItemTemplate>

我找不到方法,上下文菜单..组合框...等等。我怎么做

如何制作喜欢的图片? 组合框图像

标签: wpfuser-interfacecomboboxcontextmenucustomizing

解决方案


欢迎来到 SO!

如果这个问题被标记为关闭,请不要感到惊讶,这个网站是为了回答非常具体的问题,而不是“我该怎么做?”

不过,为了让您开始,您需要对控件进行模板化以替换默认外观。如果您将编辑光标放在 XAML 中的 ComboBox 声明上,请转到属性页面,单击 Miscellaneous->Template 右侧的小框,然后选择“转换为新资源”,然后 VS 将为您模板化控件。(在 ComboBox 的情况下,您可能还需要添加对 PresentationFramework.Aero2 的项目引用)。

创建的控件模板将在其中包含一个 ScrollViewer x:Name="DropDownScrollViewer",因此重复此过程以将该元素模板化到一个名为 的新模板ScrollViewerControlTemplate1中。这将有一个用于实际垂直滚动条的控件x:Name="PART_VerticalScrollBar",因此再次重复以获取名为 的最终控件模板ScrollBarControlTemplate1。这是您要更改其外观的滚动条,因此您可以简单地覆盖其内容以获得您想要的效果,例如:

    <ControlTemplate x:Key="ScrollBarControlTemplate1" TargetType="{x:Type ScrollBar}">
        <Border BorderBrush="{DynamicResource VS.Environment.ScrollBarBorderBrush}" Uid="Border_3" Padding="5">
            <Grid Uid="Grid_1">
                <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="5"/>
                <Track x:Name="PART_Track" IsDirectionReversed="True" Uid="PART_Track">
                    <Track.Thumb>
                        <Thumb Uid="Thumb_1">
                            <Thumb.Template>
                                <ControlTemplate>
                                    <Border Background="Gray" CornerRadius="5"/>
                                </ControlTemplate>
                            </Thumb.Template>
                        </Thumb>
                    </Track.Thumb>
                </Track>
            </Grid>
        </Border>
    </ControlTemplate>

...这将导致:

在此处输入图像描述

分页按钮我没做过,但基本思路是一样的。RepeatButton在创建的原始元素中查找类型元素ScrollBarControlTemplate1(我已将其删除)并将它们放在包含列表元素本身的ScrollViewerControlTemplate1下方。ScrollContentPresenter


推荐阅读