我有一個ItemsControl
,它將一些Point
渲染爲類似於2D地圖中的小點的恰當定位的橢圓。如何將此ItemsControl設置爲StaticResource
因爲我的屏幕包含圖形,其中相同ItemsControl
必須顯示很多次,我試着將它做成靜態資源,但兩件事情是錯誤的:
當我嘗試在同一資源多次實例,第二次發生錯誤。我在other answer中讀到這是因爲
StaticResources
是靜態的,並且在Visual Tree中同時不能有兩個靜態的Control
實例;當我只實例化一個,元素綁定到
PainelMarc.ActualHeight
(例如)不起作用;
所以我的目標是將這個ItemsControl
,或它的一部分,爲可重複使用的資源枯竭我的XAML。
<ItemsControl x:Name="PainelMarc"
ItemsSource="{Binding ExameAtivo.ListaMarcadores, Mode=TwoWay}" Grid.Row="1" Grid.RowSpan="3">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type FrameworkElement}">
<Setter Property="RenderTransform">
<Setter.Value>
<MultiBinding Converter="{StaticResource MarcadoresConverter}">
<Binding />
<Binding ElementName="PainelMarc" Path="ActualHeight"/>
<Binding ElementName="PainelMarc" Path="ActualWidth"/>
<Binding Source="{StaticResource LimitesFrontal}" Path="Geometry.Bounds"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="Double">
<Canvas>
<Ellipse x:Name="elipsemouseover"
Width="10"
Height="{Binding Width, RelativeSource={RelativeSource Self}}"
Fill="White" Stroke="Black" StrokeThickness="1" RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<TranslateTransform X="-5" Y="-5"/>
</Ellipse.RenderTransform>
</Ellipse>
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在我原來的那些代碼綁定沒有工作,我不得不將其更改爲'的RelativeSource ',現在很好。謝謝! – heltonbiker
很棒.. !!很高興它爲你工作.. :) –