WPF: Как я отбрасываю все унаследованные стили?

Как я говорю управлению или блоку средств управления не наследовать какие-либо стили и вернуться назад к значениям по умолчанию?

Мне нужно это, потому что у меня есть полная тема, которая главным образом работает, но для одной части действительно завинчивает мой дизайн.

14
задан Dave Clemmer 16 August 2011 в 16:24
поделиться

2 ответа

Вы можете создать свой собственный контейнер Для участия в использовании кусочка пользовательского интерфейса и установка наследство на SkipallNow (или значение, подходящее для вашей ситуации):

using System.Windows;
using System.Windows.Controls;

public class NoInheritanceContentControl : ContentControl
{
    public NoInheritanceContentControl()
    {
        InheritanceBehavior = InheritanceBehavior.SkipAllNow;
    }
}

Тогда вы можете просто придерживаться NONHERITANCECTANCENTANCENTENTENTentControl В вашем визуальном дереве и что-либо внутри не будет наследства стилей.

20
ответ дан 1 December 2019 в 12:38
поделиться

Найден один.

public class MTObservableCollection<T> : ObservableCollection<T>
{
   public override event NotifyCollectionChangedEventHandler CollectionChanged;
   protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   {
      var eh = CollectionChanged;
      if (eh != null)
      {
         Dispatcher dispatcher = (from NotifyCollectionChangedEventHandler nh in eh.GetInvocationList()
                 let dpo = nh.Target as DispatcherObject
                 where dpo != null
                 select dpo.Dispatcher).FirstOrDefault();

        if (dispatcher != null && dispatcher.CheckAccess() == false)
        {
           dispatcher.Invoke(DispatcherPriority.DataBind, (Action)(() => OnCollectionChanged(e)));
        }
        else
        {
           foreach (NotifyCollectionChangedEventHandler nh in eh.GetInvocationList())
              nh.Invoke(this, e);
        }
     }
  }
}

http://www.julmar.com/blog/mark/2009/04/01/AddingToAnObservableCollectionFromABackgroundThread.aspx

-121--916891-

Необходимо задать атрибут LinearLayout android: clickable = «true» в файле компоновки xml или setClickable (true) в коде действия java.

-121--1375840-

Это сложно, но вы можете попробовать это,

  1. Создать словарь ресурсов DefureStyles
  2. Создать именованные стили элемента управления, который вы хотите сохранить стиль по умолчанию следующим образом.

     < Стиль
    x: Key = «DefureButureStyle»
    TargetType = «{x: Кнопка типа}»
    BasedOn = «{StartResource {x: Type Button}} »/>
    
  3. Убедитесь, что этот DefureStyles добавлен перед применением любой из тем. Это должна быть первая запись в ресурсах приложения.

  4. Затем для сохранения стиля по умолчанию к любому элементу управления во время выполнения можно применить стиль «DefureButureStyle».

2
ответ дан 1 December 2019 в 12:38
поделиться
Другие вопросы по тегам:

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