2013-12-19 29 views
2

燈xaml我在DataTemplates中很多時候使用下面的結構來使小燈'點亮。我可以製作一個Xaml單線紙嗎?

我可以把它放在ContentPresenter或DataTemplate或類似的東西中以將代碼減少到一行嗎?

「測試」值在xaml中針對每個燈進行硬編碼。我通過字符串'<'獲得了一個綁定值,Signal> Signals。

因爲它使用的行數很多,所以我無法在轉換器上使用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如果我沒有harcdcoded'IO'值來命名燈,只會顯示綠色。而在物理控制器中,「IO」值始終存在。

所以請不要建議含有值的有效的解決方案:在一行:-)

+0

如果你真的只是想凝聚了兩件事情,'CONTENT =「{綁定路徑=信號[測試] .lampvalue, StringFormat ='{0} test'}「'設置爲註釋而不是回答,因爲我還沒有喝咖啡,也沒有把握。 –

+0

我編輯了我的問題來更準確地描述我的問題 – bitestar

+0

嗯,這是xaml中的「合法」聲明。 –

回答

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}"/> 
+0

如果我還不夠精確:您必須將硬編碼值「test」放入一行! – bitestar

+0

這是他在這裏的DataTemplate中。 – Josh

+0

@bitestar我更改了模板 – Jehof

相關問題