我正在編寫一個小程序來顯示不同的objects
和國家之間的連接狀態。準確地說,這些物體是來自相同的class
的設備和部件inherited
。如果存在這些對象之一與某個國家之間的連接,則創建與對象和國家有關的ConnectionObject
。對於設備來說很簡單:由於設備只能以一種方式連接到一個國家,所以圖標總是相同的。但爲了使它更復雜一些,有兩種連接模式:包括和排除。所以你可以說一部分可以被批准或明確禁止/來自一個國家。爲了顯示這種差異,我想在代表連接(include = checkmark, exclude = cross, no connection = hide icon)
的ListViewItem
中繪製不同的圖標。 我的圖標是呈現ConnectionObjects的ListView
的本地資源中的多邊形。將polygon
設置爲附加到ListViewItem
的畫布內的contentcontrol的資源對於設備而言非常適用,但對於這些部分不適用。所以我試圖通過在ContentControl中創建一個DataTrigger
來在polygons
之間切換。我認爲這樣可以,但即使圖標應該處於打開狀態(如果沒有連接,該項目縮小到包含的標籤尺寸),也不會繪製圖標polygon
。我真的不知道爲什麼。說實話,我不是wpf
的專家,並且使我對這個框架有了第一次經歷。ContentControl不顯示多邊形
這裏是一些代碼:
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>
代表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>
的不工作畫布代表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>
任何建議我做錯了嗎?畫布上
當我保持本地值時,圖標始終顯示分配的對號,但是當我刪除它時,根本沒有顯示圖標。只有需要的圖標空間似乎被保留。有什麼我必須做的依賴屬性可能嗎? –
那麼你在DataTrigger中的綁定是不正確的。你能檢查你在輸出窗口中是否有綁定錯誤?或者你將不得不分享你的整個UI代碼 – Nitin