WPF: стиль ListBoxItem для унификации цветов - PullRequest
1 голос
/ 15 марта 2011

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

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

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

Спасибо!

Hans

1 Ответ

1 голос
/ 15 марта 2011

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

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

...