У меня есть ItemsControl
, который отображает Point
в подходящие эллипсы, похожие на маленькие точки на двумерной карте.Как сделать этот ItemsControl в StaticResource
Поскольку мой экран содержит чертежи, где же ItemsControl
должны отображаться во много раз, я попытался сделать это в StaticResource, но две вещи были неправы:
Когда я пытаюсь создать экземпляр того же ресурса несколько раз , второй раз дает ошибку. Я прочитал в other answer, что это потому, что
StaticResources
являются, ну, статическими, и вы не можете одновременно иметь два экземпляра статическогоControl
в визуальном дереве;Whe Я создаю экземпляр только один, привязка элемента к
PainelMarc.ActualHeight
(например) не работает;
Так что моя цель состоит в том, чтобы СУХОЙ мой XAML путем преобразования этого ItemsControl
, или его части, в многократно используемые ресурсы.
<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
Great .. !! Рад, что это сработало для вас .. :) –