WPF: стиль ListBoxItem для унификации цветов

Я начинаю разработку WPF на сенсорном устройстве. Хотя .NET и WPF кажутся замечательными технологиями, я несколько растерялся.

Я разрабатываю общий элемент управления. Я определил UserControl, который содержит Grid, несколько кнопок и SurfaceListBox. В реальном C#-коде я обрабатываю события и добавляю новые элементы в список, манипулируя атрибутом listItems-Attribute. Пока это работает нормально.

Теперь я хотел бы изменить стиль элементов списка - я хотел бы сделать их фон прозрачным, если они не выделены, и полностью белым, если они выделены. К сожалению, следующий фрагмент кода просто не работает. Он просто устанавливает белый цвет фона элемента списка text, но не всего элемента.

Обновление: теперь это работает!

<UserControl x:Class="SGEditor.MyControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         xmlns:my="http://schemas.microsoft.com/surface/2008" UseLayoutRounding="True">
<UserControl.Resources>
    <Style TargetType="{x:Type ListBoxItem}" x:Key="ContainerStyle">
        <Setter Property="Background" Value="Transparent" />
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="White" />
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

<Grid>        
    <my:SurfaceListBox Width="300" Height="300" />
</Grid>
</UserControl>

Спасибо!

Ганс


person HansSchild    schedule 15.03.2011    source источник


Ответы (1)


Я точно не знаю, как сделать то, что вы хотите сделать, но я почти уверен, что вы не можете переназначить статическое системное значение, как вы пытаетесь сделать в x:Key. Это просто имя, которое вы используете для ссылки на ресурс позже в xaml, например MyBackgroundColor или что-то еще.

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

person Benny Jobigan    schedule 15.03.2011