指示灯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来识别它。 如果我没有使用带有密码的'IO'值来命名灯,只会显示绿色。在物理控制器中,“IO”值始终存在。
所以请建议一个包含两个值的有效解决方案:信号[test]和'test'在一行: - )
答案 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}"/>