Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF组合框应仅在箭头处打开_Wpf_Xaml - Fatal编程技术网

WPF组合框应仅在箭头处打开

WPF组合框应仅在箭头处打开,wpf,xaml,Wpf,Xaml,是否有机会更改wpf组合框,使其仅在单击左侧的箭头时打开? 通常你可以点击任何地方打开它。我不想那样 谢谢 通常你可以点击任何地方打开它。我不想那样 然后,您应该为ToggleButton创建一个自定义模板。在VisualStudio或Blend中的设计模式下,右键单击组合框元素,然后选择编辑模板->编辑副本 这将把默认模板复制到XAML标记中,然后您可以根据需要对其进行编辑。查找带有ComboBoxToggleButton的x:Key的样式,并修改此样式的ControlTemplate 通常你

是否有机会更改wpf组合框,使其仅在单击左侧的箭头时打开? 通常你可以点击任何地方打开它。我不想那样

谢谢

通常你可以点击任何地方打开它。我不想那样

然后,您应该为ToggleButton创建一个自定义模板。在VisualStudio或Blend中的设计模式下,右键单击组合框元素,然后选择编辑模板->编辑副本

这将把默认模板复制到XAML标记中,然后您可以根据需要对其进行编辑。查找带有ComboBoxToggleButton的x:Key的样式,并修改此样式的ControlTemplate

通常你可以点击任何地方打开它。我不想那样

然后,您应该为ToggleButton创建一个自定义模板。在VisualStudio或Blend中的设计模式下,右键单击组合框元素,然后选择编辑模板->编辑副本


这将把默认模板复制到XAML标记中,然后您可以根据需要对其进行编辑。查找带有ComboBoxToggleButton的x:Key的样式,并修改此样式的ControlTemplate。

我成功地使用了以下代码。请注意,我使用的是Materialdesign,如果不使用它,您必须对其进行一些更改

App.xaml中的代码

以及视图中的组合框本身

 <ComboBox materialDesign:HintAssist.Hint="{lex:Loc ordernumber}" Style="{StaticResource MaterialDesignFloatingHintComboBox2}"   Text="{Binding SalesOrderNumber}" Margin="0 0 40 0" FontSize="22" Width="250"
              IsEditable="True" DisplayMemberPath="Identifier" SelectedItem="{Binding SelectedSalesOrder}"
              ItemsSource="{Binding LastSalesOrders}" IsTextSearchEnabled="False" utility:EditableComboBox.MaxLength="10"  x:Name="TbOrder" >
            <ComboBox.InputBindings>
                <KeyBinding Command="{Binding OpenSalesOrderOrCustomerCommand}" Key="Return" />
            </ComboBox.InputBindings>

            <ComboBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="{lex:Loc paste}" Command="{Binding PasteOrdernumberCommand}" />
                </ContextMenu>
            </ComboBox.ContextMenu>
  </ComboBox>

我设法让它与以下代码一起工作。请注意,我使用的是Materialdesign,如果不使用它,您必须对其进行一些更改

App.xaml中的代码

以及视图中的组合框本身

 <ComboBox materialDesign:HintAssist.Hint="{lex:Loc ordernumber}" Style="{StaticResource MaterialDesignFloatingHintComboBox2}"   Text="{Binding SalesOrderNumber}" Margin="0 0 40 0" FontSize="22" Width="250"
              IsEditable="True" DisplayMemberPath="Identifier" SelectedItem="{Binding SelectedSalesOrder}"
              ItemsSource="{Binding LastSalesOrders}" IsTextSearchEnabled="False" utility:EditableComboBox.MaxLength="10"  x:Name="TbOrder" >
            <ComboBox.InputBindings>
                <KeyBinding Command="{Binding OpenSalesOrderOrCustomerCommand}" Key="Return" />
            </ComboBox.InputBindings>

            <ComboBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="{lex:Loc paste}" Command="{Binding PasteOrdernumberCommand}" />
                </ContextMenu>
            </ComboBox.ContextMenu>
  </ComboBox>

这在标准wpf上非常有效。不幸的是,我使用的是材料设计。但我想我会找到答案的。谢谢bunch@ThomasKlammer有什么有趣的更新吗?这对我很有帮助,此外,我想删除所选项目的文本,只保留箭头。@cf请参见下面我的新帖子。这在标准wpf上非常有用。不幸的是,我使用的是材料设计。但我想我会找到答案的。谢谢bunch@ThomasKlammer有什么有趣的更新吗?这对我很有帮助,此外,我想删除所选项目的文本,只保留箭头。@cf请参阅下面我的新帖子
 <ComboBox materialDesign:HintAssist.Hint="{lex:Loc ordernumber}" Style="{StaticResource MaterialDesignFloatingHintComboBox2}"   Text="{Binding SalesOrderNumber}" Margin="0 0 40 0" FontSize="22" Width="250"
              IsEditable="True" DisplayMemberPath="Identifier" SelectedItem="{Binding SelectedSalesOrder}"
              ItemsSource="{Binding LastSalesOrders}" IsTextSearchEnabled="False" utility:EditableComboBox.MaxLength="10"  x:Name="TbOrder" >
            <ComboBox.InputBindings>
                <KeyBinding Command="{Binding OpenSalesOrderOrCustomerCommand}" Key="Return" />
            </ComboBox.InputBindings>

            <ComboBox.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="{lex:Loc paste}" Command="{Binding PasteOrdernumberCommand}" />
                </ContextMenu>
            </ComboBox.ContextMenu>
  </ComboBox>