小编Mal*_*oss的帖子

有没有办法在XAML中链接多个值转换器?

我有一种情况需要显示一个整数值,绑定到我的数据上下文中的属性,然后通过两次单独的转换:

  1. 反转范围内的值(例如,范围是1到100; datacontext中的值是90;用户看到的值是10)
  2. 将数字转换为字符串

我意识到我可以通过创建自己的转换器(实现IValueConverter)来完成这两个步骤.但是,我已经有一个单独的值转换器,只执行第一步,第二步由Int32Converter覆盖.

有没有办法在XAML中链接这两个现有的类而不必创建另一个聚合它们的类?

如果我需要澄清这些,请告诉我.:)

谢谢.

data-binding wpf xaml ivalueconverter

117
推荐指数
4
解决办法
4万
查看次数

如何开始新列表,继续上一个列表中的编号?

start在ol标签的属性被弃用之前,我正在尝试做一些过去非常简单的事情.我只想在我的页面中有一对有序列表,但是开始编写第一个完成的第二个列表的编号.就像是:

1. do stuff
2. do stuff

Here's a paragraph

3. do stuff
Run Code Online (Sandbox Code Playgroud)

我已经看到counter-resetcounter-incrementCSS属性应该能够实现这一点,但我无法让它工作.到目前为止,这是我的代码:

<html>
<head>
  <style type="text/css">
    ol li { counter-increment: mycounter; }
    ol.start { counter-reset: mycounter; }
    ol.continue { counter-reset: mycounter 2; }
  </style>
</head>

<body>
  <ol class="start">
    <li>You can't touch this</li>
    <li>You can't touch this</li>
  </ol>
  <p>STOP! Hammer time.</p>
  <ol class="continue">
    <li>You can't touch this</li>
  </ol>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

说实话,即使这样有效,也不会是理想的.我不想指定ol.continue选择器中第一个列表所达到的数字.

我究竟做错了什么?实现所需效果所需的最小HTML/CSS组合是什么?

提前致谢... :)

我最终采用的解决方案
这里是我最终使用的HTML和CSS代码.感谢Felix让我到那儿.还必须提到Lee也提供了一个有趣的jQuery替代方案.

<html>
<head>
  <style type="text/css">
    ol.split { …
Run Code Online (Sandbox Code Playgroud)

html css

41
推荐指数
3
解决办法
3万
查看次数

如何删除TabItem内容的默认边距?

我正在使用TabControlWPF中的类,我注意到每个内容的TabItem所有边都有4像素的默认边距.

示例代码:

<Window x:Class="TabControlPadding.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
  <Grid>
    <TabControl Margin="10">
      <TabItem Header="Tab 1">
        <Grid Background="Pink"/>
      </TabItem>
      <TabItem Header="Tab 2">
        <Grid Background="LightBlue"/>
      </TabItem>
    </TabControl>
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

截图:

TabItem内容周围的边距

我想摆脱这个边际(将其减少到零),但我宁愿不必完全替换模板或类似的任何重量.

有一种简单的方法可以以非常有针对性的方式做到这一点吗?

wpf tabcontrol margin tabitem

26
推荐指数
1
解决办法
1万
查看次数

重复请求apple-touch-icon-precomposed.png,并在头部设置了apple-touch-icon

我在页面的头部为我的apple-touch-icon文件设置了路径:

<link rel="apple-touch-icon" href="/images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="/images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="/images/apple-touch-icon-114x114.png">
Run Code Online (Sandbox Code Playgroud)

但每隔一段时间我就会从Android用户那里得到一批(一次超过五个)/apple-touch-icon-precomposed.png的请求.这是正常的行为,我该如何让它停止?我知道我可以添加文件,但我不想创建新版本的文件,希望我得到相同的效果.

更新 我们最近看到了对apple-touch-icon-144x144.png的请求,我在网上找不到任何可以解释我们为什么需要它的内容(我们还是添加了它).

html android

16
推荐指数
1
解决办法
1万
查看次数

最优雅的UI用于分类项目?

我有一组项目,用户需要以多种方式进行分组/分类.举个例子,假设它是汽车的集合,用户希望通过以下方式对它们进行分类:

  • 颜色(红色,银色,蓝色,黑色等)
  • 车身形状(舱口,轿车,轿跑车,旅行车等)
  • 座椅(2,4,5,6等)
  • 等等

您是否曾经遇到过这样一种特别优雅的方式,它允许用户完全自由地定义自己的类别和价值观?

显然,在任何设计中都会有许多权衡取舍.例如,可学习的设计可能效率不高,反之亦然.或者某些设计可能比其他设计对房地产要求更高.有些人的开发时间比其他人长得多.

无论如何,如果你已经看到 - 或设计 - 一个很好的模式,我会有兴趣听到它.如果你有截图,那就更好了.

尝试澄清:标签确实是对事物进行分类的一种很好的方式,但在我看到的所有实践中,只有一个级别的标记.用户一般不会去定义一个类/属性和商品的价值在该类别中.要使用上面的示例和StackOverflow的标记,您可以将汽车标记为"蓝色","轿车","4"等.StackOverflow没有固有的知识,一个项目不能被标记为"轿车"和"轿跑车".

我正在考虑的界面需要知道这种事情,因此用户定义的属性建议更符合我的想法.我只是想找到一个具体的例子,说明如何优雅地实现这种系统(在桌面应用程序中,如果这有所不同).

那更清楚吗?如果没有,请发表评论,我会再次澄清.:)

usability user-interface

8
推荐指数
1
解决办法
2799
查看次数

没有父母的mercurial修订是什么意思?

我现在有一个处于奇怪状态的Mercurial存储库.这就是TortoiseHG的样子:

Hg图

我不认为这是可能的.修订版54的父级为"-1(000000000000)"(即没有).显然我对Mercurial还有一些不了解的事情,任何人都可以让我知道这意味着什么 - 以及进入这种状态必然会发生什么.据我所知,它只是推送和拉出它的东西 - 并没有人使用任何古怪的扩展.

修订版54和55只是添加标签,但如果我'更新-C'到版本54,我最终只能使用.hgtags文件.

我从修订版53中克隆了一下来解决这个问题.但我宁愿理解这里发生的事情,所以我可以避免它再次发生.

mercurial

8
推荐指数
2
解决办法
2490
查看次数

BorderThickness为1渲染,厚度为2像素 - 我在这里缺少什么?

我在XAML/WPF中有一个Border,我用它来给对话框中的文本标题提供一个全段宽的下划线.我将其BorderThickness属性设置为"0,0,0,1".在某些地方,最终会使用2像素粗的下划线进行渲染,而在其他地方,它会正确显示为单像素下划线.我究竟做错了什么?

这是我用来替换我的标签的可视树的控件模板(模板的使用是无关紧要的,我会想到):

<ControlTemplate x:Key="HeaderTemplate" TargetType="{x:Type Label}">
<Border BorderThickness="0,0,0,1" Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Margin}">
  <Border.BorderBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
      <GradientStop Offset="0" Color="Black"/>
      <GradientStop Offset="0.6" Color="Black"/>
      <GradientStop Offset="1" Color="Transparent"/>
    </LinearGradientBrush>
  </Border.BorderBrush>
  <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" Style="{StaticResource HeaderStyle}"
             Margin="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Padding}"/>
</Border>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

我对WPF很新,所以我怀疑我遗漏了一些关于它的渲染模型的基础知识.

  • 边框渲染是否在像素边界上?似乎不是这样,因为我认为如果是这样的话会部分透明.
  • 有没有办法保证我能得到我所要求的厚度?
  • 我甚至犯了嚎叫错误吗?

作为参考,我没有应用缩放变换(或任何其他类型的变换).任何帮助,将不胜感激.:)

wpf xaml rendering

7
推荐指数
2
解决办法
4269
查看次数

System.Windows.Input.Key枚举中的Equals键没有条目?

我正试图设置InputGesture一个RoutedUICommand,挂起它以便在用户按下时捕获Ctrl + =.我正在使用一个KeyGesture对象,但我无法在System.Windows.Input.Key枚举中看到equals('=')键的条目.

我期待的是能够做到以下几点:

ZoomIn = new RoutedUICommand("Zoom In", "ZoomIn", typeof(Window),
    new InputGestureCollection { 
        new KeyGesture(Key.Equals, ModifierKeys.Control) 
    });
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

.net keyboard wpf

7
推荐指数
1
解决办法
3937
查看次数

如何将样式传播到DataTemplate中的超链接?

我尝试使用祖先的对象设置Foreground颜色,但它没有任何效果.我甚至使用了更改超链接前景的提示而没有丢失悬停颜色,但它没有任何区别 - 我仍然得到一个悬停时为红色的蓝色超链接.HyperlinkStyleResourcesBasedOn

这是我的控件的XAML,包括ItemsControl使用超链接显示其项目的XAML :

<StackPanel Background="Red" TextElement.Foreground="White">
  <StackPanel.Resources>
    <Style TargetType="Hyperlink" BasedOn="{StaticResource {x:Type Hyperlink}}">
      <Setter Property="Foreground" Value="Yellow"/>
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="Foreground" Value="White"/>
        </Trigger>
      </Style.Triggers>
    </Style>
  </StackPanel.Resources>
  <TextBlock>Data import errors</TextBlock>
  <ItemsControl ItemsSource="{Binding Errors}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

而且这些项目ItemsControl正在取得以下成果DataTemplate:

<DataTemplate DataType="{x:Type Importer:ConversionDetailsMessage}">
  <TextBlock>
    <Run Text="{Binding Message, Mode=OneTime}"/>
    <Hyperlink Command="Common:ImportDataCommands.ExplainConversionMessage" CommandParameter="{Binding}">
      <Run Text="{Binding HelpLink.Item2, Mode=OneTime}"/>
    </Hyperlink>
  </TextBlock>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

值得一提的,那就是,我不想只是上直接设置不同颜色HyperlinkDataTemplate.这是因为模板将被许多不同的ItemsControl对象使用,其中大部分将在白色背景上,因此可以使用标准的超链接颜色.(请注意,上面XAML中的那个具有红色背景.)

简而言之,我不希望 …

wpf xaml styles datatemplate hyperlink

7
推荐指数
1
解决办法
2777
查看次数

如何从 GitHub 拉取请求中删除参与者?

我创建了一个拉取请求并将其分配给我的一位同事(“Brian”)进行审查。此后他告诉我他没空,所以我将其重新分配给了另一位同事(“Geoff”)。我现在有一个拉取请求,其中列出了 3 位参与者:我自己、Brian 和 Geoff。

如何从参与者列表中删除原始受让人 (Brian)?

github pull-request

5
推荐指数
1
解决办法
2819
查看次数

为什么UI的可扩展性在WPF中很重要?

虽然我喜欢在WPF和XAML中开发用户界面,但我试图通过创建我的图标作为矢量图像来接受可扩展性方面......但它真的很难!我很少能用光栅图形获得同样的清晰度,而且生成图标几乎总需要更长的时间.

我在浪费时间吗?制作可扩展图标没有任何好处吗?或者在Windows中是否有某个设置可以扩展UI的可访问性,从而使scalabilty变得重要?

欢迎你的建议.:)

wpf xaml scalability vector-graphics

2
推荐指数
1
解决办法
1111
查看次数

如果目标属性已具有显式值,则属性触发器中的setter将失败

我目前正在尝试为WPF中ControlTemplateButton类创建一个类,用通常的可视化树取代使得按钮看起来类似于Google Chrome选项卡上的小(X)关闭图标.我决定Path在XAML中使用一个对象来实现这个效果.使用属性触发器,控件通过设置图标的红色背景来响应IsMouseOver属性的更改.

这是来自测试应用程序的XAML:

<Window x:Class="Widgets.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

  <Window.Resources>
    <Style x:Key="borderStyle" TargetType="Border">
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="Background">
            <Setter.Value>
              <SolidColorBrush Color="#CC0000"/>
            </Setter.Value>
          </Setter>
        </Trigger>
      </Style.Triggers>
    </Style>

    <ControlTemplate x:Key="closeButtonTemplate" TargetType="Button">
      <Border Width="12" Height="12" CornerRadius="6"
              BorderBrush="#AAAAAA" Background="Transparent"
              Style="{StaticResource borderStyle}"
              ToolTip="Close">
        <Viewbox Margin="2.75">
          <Path Data="M 0,0 L 10,10 M 0,10 L 10,0" Stroke="{Binding BorderBrush, RelativeSource={RelativeSource FindAncestor, AncestorType=Border, AncestorLevel=1}}" StrokeThickness="1.8"/>
        </Viewbox>
      </Border>
    </ControlTemplate>
  </Window.Resources>

  <Grid Background="White">
    <Button Template="{StaticResource closeButtonTemplate}"/>
  </Grid>

</Window>
Run Code Online (Sandbox Code Playgroud)

请注意,圆形背景始终存在 - 当鼠标悬停在圆形背景上时,它只是透明的.

这个问题是触发器无法正常工作.按钮的外观没有任何变化.但是,如果我Background="Transparent" …

wpf xaml controltemplate

1
推荐指数
1
解决办法
1543
查看次数