2010-06-16 26 views
0

我希望能從比我更好的經驗的人那裏獲得一些見解,以創建一個窗口/一組窗口來在WPF中顯示數據。這裏是我的任務的一個小概述:在WPF中生成大量類似的窗口集合

  • 我會從接收器獲得大量的二進制輸出。然後這將被解析並鍵入每個二進制串的特定位的含義(即word1 bit1 = Receiver Status OK)。

  • 然後必須將數據顯示在某種格式的簡單窗口中接收機狀態OK [複選框綁定到值],或速度在X方向:[綁定到值的TextBlock]

的問題如下:

  • 大約有60獨特的 '消息'當用戶需要查看我時需要顯示的信息即將發佈的數據

  • 每條消息的詞長度不同,每條消息的含義不同,並且必須顯示不同數量的字段。

我想知道你將如何處理這種情況。我正在考慮進行蠻力,每條消息一個窗口,但這似乎很原始。我的另一個想法是製作一個標準窗口,其中包含最大消息大小的網格,然後用必要的TextBlocks等填充它。然後,我將DataBind鍵和值綁定到每個消息的字段,並摺疊未使用的字段。

任何建議將不勝感激。先謝謝你。

回答

0

這聽起來像你有一堆具體的消息類。如果是這種情況,我會爲Window'sResources中的每條消息創建一個新的DataTemplateDataTemplate'sx:Key應該設置爲它所代表的類的類型。然後,您將WindowContent設置爲該消息的實例,並且它將爲該類型選擇正確的DataTemplate

例如

<Window x:Class="MessageTest.MessageWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:lcl="clr-namespace:MessageTest"> 

    <Window.Resources> 
     <DataTemplate x:Key="{x:Type lcl:SimpleMessage}"> 
      <TextBlock Text="{Binding MessageContent}" /> 
     </DataTemplate> 
    </Window.Resources> 

</Window> 

而且當你創建Window

private void MessageRecieved(IMessage message) 
{ 
    var window = new MessageWindow { Content = message }; 
    window.Show(); 
}