@ZelibobA1706

Из-за чего пропадают стили в WPF?

Написал кастомный стиль для listview подключил как resourcedictionary все хорошо работало. Потом задал пару свойств к элементам через listview.ItemContainerStyle и стили, устанавливаемые ранее пропадают. Что я сделал не так?
<ListView>
    <ListView.ItemTemplate>
        <DataTemplate>                    
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="IsSelected" Value="{Binding IsChecked}"/>
            <Setter Property="IsEnabled" Value="{Binding IsEnabled}"></Setter>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>
  • Вопрос задан
  • 2467 просмотров
Решения вопроса 1
@i_light
Backend, XAML, crossplatform
После того, как переопределён ItemTemplate или ItemContainerStyle, старые стили соответственно полностью перезаписываются. Неуказанные значения - перезаписываются значениями по умолчанию.

Объявление из примера кода равнозначно коду:
var view = new ListView();
view.ItemTemplate = new DataTemplate();
view.ItemContainerStyle = new Style() { ... };


Если нужно что-то изменить в стиле в ресурсе, надо его редактировать именно в том месте, где он определён. Если же нужно иметь оба стиля, Expression Blend умеет делать копии (правый клик по контролу - Edit Template - Edit a copy). Ну, или просто скопировать и дать другой ключ ресурса.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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