2013-09-25 170 views
1

我正在編寫一個小程序來顯示不同的objects和國家之間的連接狀態。準確地說,這些物體是來自相同的class的設備和部件inherited。如果存在這些對象之一與某個國家之間的連接,則創建與對象和國家有關的ConnectionObject。對於設備來說很簡單:由於設備只能以一種方式連接到一個國家,所以圖標總是相同的。但爲了使它更復雜一些,有兩種連接模式:包括和排除。所以你可以說一部分可以被批准或明確禁止/來自一個國家。爲了顯示這種差異,我想在代表連接(include = checkmark, exclude = cross, no connection = hide icon)ListViewItem中繪製不同的圖標。 我的圖標是呈現ConnectionObjects的ListView的本地資源中的多邊形。將polygon設置爲附加到ListViewItem的畫布內的contentcontrol的資源對於設備而言非常適用,但對於這些部分不適用。所以我試圖通過在ContentControl中創建一個DataTrigger來在polygons之間切換。我認爲這樣可以,但即使圖標應該處於打開狀態(如果沒有連接,該項目縮小到包含的標籤尺寸),也不會繪製圖標polygon。我真的不知道爲什麼。說實話,我不是wpf的專家,並且使我對這個框架有了第一次經歷。ContentControl不顯示多邊形

這裏是一些代碼:

  1. ListView控件內Rescources:

    <UserControl.Resources> 
    <Polygon x:Key="Checkmark" x:Shared="False" 
        Points="0,4 4,8 12,0 12,4 4,12 0,8" Fill="#FF40C858" Stretch="Uniform"/> 
    <Polygon x:Key="Crossmark" x:Shared="False" 
        Points="0,0 4,0 6,4 8,0 12,0 9,6 12,12 8,12 6,8 4,12 0,12 3,6" Fill="#FFE52826" Stretch="Uniform"/> 
    </UserControl.Resources> 
    
  2. 代表ListViewItems的工作帆布DeviceConnections:

    <Canvas x:Name="DatCanvas" Width="12" Height="12" Margin="4" Visibility="{Binding IconVisibility}"> 
        <ContentControl x:Name="DeviceIcon" Content="{StaticResource Checkmark}" Canvas.Top="0" Canvas.Left="0"/> 
    </Canvas> 
    
  3. 的不工作畫布代表partConnectio的ListViewItems NS:

    <Canvas x:Name="DatCanvas" Width="12" Height="12" Margin="4" Visibility="{Binding IconVisibility}"> 
        <ContentControl x:Name="PartIcon" Content="{StaticResource Crossmark}" Canvas.Top="0" Canvas.Left="0"> 
          <ContentControl.Style> 
           <Style TargetType="{x:Type ContentControl}"> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding ConnectionMode}" Value="Include"> 
              <Setter Property="Content" Value="{StaticResource Checkmark}" /> 
            </DataTrigger> 
            <DataTrigger Binding="{Binding ConnectionMode}" Value="Exclude"> 
             <Setter Property="Content" Value="{StaticResource Crossmark}" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </ContentControl.Style> 
        </ContentControl> 
    </Canvas> 
    

任何建議我做錯了嗎?畫布上

回答

0

Remove the local value of Content直接設置即不以ContentControl中節點中設置Content屬性只是做

<ContentControl x:Name="PartIcon" Canvas.Top="0" Canvas.Left="0"> 

那麼你的風格觸發二傳手值將被設置。

+0

當我保持本地值時,圖標始終顯示分配的對號,但是當我刪除它時,根本沒有顯示圖標。只有需要的圖標空間似乎被保留。有什麼我必須做的依賴屬性可能嗎? –

+0

那麼你在DataTrigger中的綁定是不正確的。你能檢查你在輸出窗口中是否有綁定錯誤?或者你將不得不分享你的整個UI代碼 – Nitin