Преобразовать стиль XAML в код за стилем? - PullRequest
1 голос
/ 02 ноября 2011

У меня есть список, чей цвет выбора по умолчанию - обычный сплошной синий. Я прочитал эту статью "Как изменить цвет выбранного элемента списка WPF?" здесь . Я хочу создать стиль, данный в нем, чтобы код позади. так что я могу назначить этот стиль для моего свойства Listbox ItemContainerStyle.

как

Стиль s = ......

MyListBox.ItemContainerStyle = s;

Я хочу сделать это в коде, потому что, если пользователь изменяет тему моего программного обеспечения, тогда этот стиль (Выбор цветов) должен воссоздать себя так, чтобы соответствовать измененным цветам темы.

<Style x:Key="SimpleListBoxItem" TargetType="ListBoxItem">
 <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="ListBoxItem">
        <Border Name="Border" Padding="2" SnapsToDevicePixels="true">
          <ContentPresenter />
        </Border>
        <ControlTemplate.Triggers>
          <Trigger Property="IsSelected" Value="true">
            <Setter TargetName="Border" Property="Background" Value="{StaticResource AuthorGradient}"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

1 Ответ

4 голосов
/ 02 ноября 2011

Я думаю, что у вас нет кода за версией этого кода, вам просто нужно применить существующий шаблон к вашему списку, как показано ниже.

, если ваша цель - шаблон.

(NameOfListBox.SelectedItem as ListBoxItem).ContentTemplate = this.Resources["NameOfTemplate"] as DataTempate;
(NameOfListBox.SelectedItem as ListBoxItem).UpdateLayout();

, если ваша цель - стиль.

 (NameOfListBox.SelectedItem as ListBoxItem).Style= this.Resources["NameOfStyle"] as DataTempate;
 (NameOfListBox.SelectedItem as ListBoxItem).UpdateLayout();

пример

(lstMetaDataCards.SelectedItem as ListBoxItem).ContentTemplate = this.Resources["MetaDataCardAtEditState"] as DataTemplate;
(lstMetaDataCards.SelectedItem as ListBoxItem).UpdateLayout();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...