Действительно ли возможно разработать BulletDecorator в WPF?

JVisualVM от каталога bin в распределении JDK. При контроле и даже профилировании любого JAVA-приложения, даже один Вы не запускались ни с какими специальными параметрами. Только в последних версиях Java 6SE JDK.

8
задан Dave Clemmer 25 August 2011 в 17:37
поделиться

2 ответа

BulletDecorator.Bullet нельзя стилизовать, а BulletDecorator не является элементом управления, поэтому его нельзя создавать по шаблону.

Однако вы можете получить эффект в чистом XAML, определив ControlTemplate для ContentControl, например this:

<ControlTemplate x:Key="BulletTemplate" TargetType="{x:Type ContentControl}">
  <BulletDecorator>
    <BulletDecorator.Bullet>
      ...my bullet UIElement here...
    </BulletDecorator.Bullet>
    <ContentPresenter />
  </BulletDecorator>
</ControlTemplate>

Теперь вы можете использовать его так:

<ContentControl Template="{StaticResource BulletTemplate}">
  <TextBlock />
</ContentControl>

Если вы используете его всего несколько раз, метод «

public class MyBullet : ContentControl
{
  static MyBullet()
  {
    DefaultStyleKey.OverrideMetadata(typeof(MyBullet), new FrameworkPropertyMetadata(typeof(MyBullet));
  }
}

, затем переместите свой ControlTemplate в Theme / Generic.xaml (или объединенный в него словарь) и оберните его следующим образом:

<Style TargetType="{x:Type local:MyBullet}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate
        ...
    </Setter.Value>
  </Setter>
</Style>

Если вы это сделаете это вы можете использовать:

<local:MyBullet>
  <TextBox />
</local:MyBullet>

где угодно в вашем приложении.

13
ответ дан 5 December 2019 в 12:10
поделиться

Bullet не является свойством зависимости, поэтому его нельзя стилизовать.

Но вы, конечно, можете объявить свои собственные классы, производные от Decorator, и установить Bullet в конструкторе, поэтому вы можете написать:

<local:MyDecorator>
  <TextBlock />
</local:MyDecorator>
1
ответ дан 5 December 2019 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: