我可以制作Xaml单线眼镜吗?

时间:2013-12-19 14:11:05

标签: wpf xaml

指示灯xaml我在DataTemplates中使用了以下结构很多时间来点亮“灯”。

我可以将它放在ContentPresenter或DataTemplate或类似的东西中以将代码减少到一行吗?

对于每盏灯,'test'值在xaml中是硬编码的。我得到一个带有Dictionary'<'字符串的绑定值,Signal>叫做信号。

我不能将MultiBinding与转换器一起使用,因为它使用了尽可能多的行。有什么想法让它成为xaml中的一个衬垫?

<StackPanel ToolTip="{Binding Signals[test].tooltip}">
    <ContentPresenter Content="{Binding Signals[test].lampvalue}" ContentTemplate="{StaticResource GreenLampPresenter}" />
    <TextBlock Text="test"/>
</StackPanel>

如果以下示例实际上是xaml中的法律声明,那将是完美的。我仍然想要我的字典中的信号和硬编码的值:

Content="{Binding Path=Signals[test], StringFormat='{0} test'}". 

案例是我在小图像中有超过100个灯。灯的状态保存在字典中。如果在字典中找不到灯,则表示它未在配置中(或在物理控制器中)接线。它仍然需要小文本I0来识别它。 Green Lamp如果我没有使用带有密码的'IO'值来命名灯,只会显示绿色。在物理控制器中,“IO”值始终存在。

所以请建议一个包含两个值的有效解决方案:信号[test]和'test'在一行: - )

1 个答案:

答案 0 :(得分:1)

我没有测试过,但我认为它应该可行。

的DataTemplate:

<DataTemplate x:Key="greenLampTemplate">
  <StackPanel ToolTip="{Binding tooltip}">
    <ContentPresenter Content="{Binding lampvalue}" ContentTemplate="{StaticResource GreenLampPresenter}" />
    <TextBlock Text="test"/>
  </StackPanel>
</DataTemplate>

使用DataTemplate:

<ContentPresenter Content="{Binding Signals[test]}" 
                  ContentTemplate="{StaticResource greenLampTemplate}"/>