C# o禁用组合框,但更易于阅读,然后只需修改模板的副本即可

C# o禁用组合框,但更易于阅读,然后只需修改模板的副本即可,c#,wpf,visual-studio-2008,user-interface,combobox,C#,Wpf,Visual Studio 2008,User Interface,Combobox,混合 对象-->编辑模板-->编辑副本 然后找到禁用状态的部分,并将其更改为您喜欢的样子 <VisualState x:Name="Disabled"> <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)"> <

混合

对象-->编辑模板-->编辑副本

然后找到禁用状态的部分,并将其更改为您喜欢的样子

<VisualState x:Name="Disabled">
<Storyboard>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value=".55"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>


然后将不透明度设置为0.9左右,如果您只是想禁用组合框,但更易于阅读,则只需修改模板的副本即可

混合

对象-->编辑模板-->编辑副本

然后找到禁用状态的部分,并将其更改为您喜欢的样子

<VisualState x:Name="Disabled">
<Storyboard>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="(UIElement.Opacity)">
        <SplineDoubleKeyFrame KeyTime="00:00:00" Value=".55"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>


然后将不透明度设置为0.9左右。嘿,你正在使用wpf!简单而准确的解决方案:只需在blend中编辑您的组合框模板,并删除IsEnabled的触发器

以下是方法:

  • 在“混合”中的组合框上单击鼠标右键
  • 选择编辑模板>编辑副本
  • 给你的风格起一个你喜欢的名字。我选择了“ComboBoxStyle1”。在最合适的位置定义此样式。我已经在“此文档>窗口”中定义了它
  • 现在从菜单栏转到“视图>活动文档视图>XAML视图”
  • 现在转到第节

  • 在此部分中,搜索并删除以下部分

  • 保存。还有阿尔·伊兹
      嘿,你正在使用wpf!简单而准确的解决方案:只需在blend中编辑您的组合框模板,并删除IsEnabled的触发器

      以下是方法:

      • 在“混合”中的组合框上单击鼠标右键
      • 选择编辑模板>编辑副本
      • 给你的风格起一个你喜欢的名字。我选择了“ComboBoxStyle1”。在最合适的位置定义此样式。我已经在“此文档>窗口”中定义了它
      • 现在从菜单栏转到“视图>活动文档视图>XAML视图”
      • 现在转到第节

      • 在此部分中,搜索并删除以下部分

      • 保存。还有阿尔·伊兹
      通过设置以下两个属性,您可以使任何控件,包括
      不可聚焦和不可单击:

      <ComboBox Focusable="false" IsHitTestVisible="false" />
      

      这还要求您使用资源键
      NonClickableComboBoxTemplate
      定义一个
      控制模板
      ,该模板提供了非clickable ComboxBox的外观。

      您可以通过设置以下两个属性使任何控件,包括
      不可聚焦和不可点击:

      <ComboBox Focusable="false" IsHitTestVisible="false" />
      

      这还要求您使用资源键
      nonclickablecomboxtemplate
      定义一个
      ControlTemplate
      ,以提供非Clickable组合框的外观。

      您的示例(福特购买astra…)正确吗,还是您弄错了?不管怎样,我假设这是一对多,但不是相反?(即霍尔顿同时映射到准将和阿斯特拉,但阿斯特拉无法同时映射到霍尔顿和福特)。并且,一般来说,给定示例中的映射,您希望能够(A)显示关系;和(B)编辑关系。正确吗?用户还可以添加汽车和/或公司吗?还是删除它们?ie用户可以添加丰田还是完全删除猎鹰?还是仅仅改变关系?没有公司汽车还能存在吗?或者是一家没有汽车的公司?对不起,非常累:)已经解决了我的问题。你的例子(福特购买阿斯特拉…)正确吗,还是你弄错了?不管怎样,我假设这是一对多,但不是相反?(即霍尔顿同时映射到准将和阿斯特拉,但阿斯特拉无法同时映射到霍尔顿和福特)。并且,一般来说,给定示例中的映射,您希望能够(A)显示关系;和(B)编辑关系。正确吗?用户还可以添加汽车和/或公司吗?还是删除它们?ie用户可以添加丰田还是完全删除猎鹰?还是仅仅改变关系?没有公司汽车还能存在吗?或者是一家没有汽车的公司?对不起,非常累:)已经解决了我的问题。当您在列表框中选择项目时,您是如何做到这一点的,在这种情况下,会出现一个下拉列表?像我想的那样把组合框分开?或者..您可以在列表框项目中嵌入一个组合框。不知道怎么看,但我已经看过很多次了。或者不是真的嵌入,而是在单击时就地创建,然后在完成后立即销毁。与字段的“就地编辑”相同-根据需要嵌入和/或就地创建编辑框。这是一个常见的成语。坚持你原来的用户界面是非标准的,我相信这会让用户感到困惑。我倾向于同意你的观点。。。下一步,我必须弄清楚怎么做。虽然我认为我会坚持使用两个独立的列表框,所以我不必担心同时编辑两个项目(如果你明白我的意思的话)。我将列表框编程为同步滚动,因此保持关系清晰不是问题。谢谢你在这方面的想法!当您选择列表框中的项目(在本例中为一个项目)时,会出现一个下拉列表,您是如何做到这一点的?像我想的那样把组合框分开?或者..您可以在列表框项目中嵌入一个组合框。不知道怎么看,但我已经看过很多次了。或者不是真的嵌入,而是在单击时就地创建,然后在完成后立即销毁。与字段的“就地编辑”相同-根据需要嵌入和/或就地创建编辑框。这是一个常见的成语。坚持你原来的用户界面是非标准的,我相信这会让用户感到困惑。我倾向于同意你的观点。。。下一步,我必须弄清楚怎么做。虽然我认为我会坚持使用两个独立的列表框,所以我不必担心同时编辑两个项目(如果你明白我的意思的话)。我将列表框编程为同步滚动,因此保持关系清晰不是问题。谢谢你的帮助
            ..............  
      
            ..............
      
      <ComboBox Focusable="false" IsHitTestVisible="false" />
      
      <Style.Triggers>
        <Trigger Property="IsHitTestVisible" Value="False">
          <Setter Property="Template"
                  Value="{StaticResource NonClickablComboBoxTemplate}" />
        </Trigger>
      </Style.Triggers>