x: общий MarkupExtension в Silverlight - PullRequest
       0

x: общий MarkupExtension в Silverlight

0 голосов
/ 20 февраля 2012

Есть ли обходной путь для отсутствующего x: Shared MarkupExtension в silverlight?

У меня есть следующий Xaml, который создает эллипс на каждой целевой серии.Мне нужно, чтобы эллипсы были уникальными, так как они позже добавляются на холст.Используя этот Xaml, я получаю ошибку, что UIElement уже был добавлен к другому родительскому элементу (например, один экземпляр Ellipse добавлен в Canvas несколько раз)

В WPF я просто использую свойство x: Shared для этого стиля, чтобы заставить его работать.

    <!-- Set the style for the series -->
    <Style TargetType="SciChart:FastLineRenderableSeries" >
        <Setter Property="SeriesColor" Value="#FF93F2C1"/>
        <Setter Property="ResamplingMode" Value="Mid"/>
        <Setter Property="RolloverMarker">
            <Setter.Value>
                <Ellipse Width="9" Height="9" Fill="#7793F2C1" Stroke="#FFA3FFC9"/>
            </Setter.Value>
        </Setter>
    </Style>

Обходным решением, которое я рассмотрел, было создание элемента управления под названием RolloverMarker и настройка его шаблона элемента управления.Буду признателен за любые прямые или косвенные решения этой проблемы.

1 Ответ

1 голос
/ 21 февраля 2012

Если вы динамически добавляете объекты на панель, то каждый раз необходимо создавать новый объект или вам нужно определить свой элемент управления в каком-либо шаблоне и добавить новый объект данных, который будет использовать шаблон. Вы не можете добавить один и тот же элемент несколько раз.

Например,

// Does not work
var templateItem = new FastLineRenderableSeries();
myCanvas.Add(templateItem);
myCanvas.Add(templateItem);


// Works
myCanvas.Add(new FastLineRenderableSeries());
myCanvas.Add(new FastLineRenderableSeries());

Или

<ItemsControl ItemsSource="{Binding SomeCollection}"
              ItemTemplate="{StaticResource FastLineRenderableSeriesStyle}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
// Add items. They'll get rendered with defined ItemStyle.
var templateItem = new FastLineRenderableSeries();
SomeCollection.Add(templateItem);
SomeCollection.Add(templateItem);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...