繁体   English   中英

ListBoxItem中的DataTrigger边框

[英]DataTrigger Border in a ListBoxItem

我正在尝试更改ListBoxItem的backgroundcolor和borderbrush颜色。

<Window x:Class="Application1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PE2_WPF_Jelle_Vandekerckhove"
    Title="MainResolutions" Height="500" Width="300" ResizeMode="NoResize" Closed="Window_Closed">
<Window.Resources>

    <Style TargetType="Border">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Resafgehandeld}" Value="True">
                <Setter Property="Background" Value="LightGreen" />
                <Setter Property="BorderBrush" Value="DarkGreen" />
            </DataTrigger>
        </Style.Triggers>
    </Style>



</Window.Resources>
<StackPanel Orientation="Vertical" Background="Aquamarine">
    <TextBlock Text="Mijn Resolutions voor het jaar 2015" Margin="5" Background="White" />
    <ListBox Name="lstResolutions" Height="160">
        <ListBox.ItemTemplate>
            <DataTemplate>

                <Border Name="Rand" BorderBrush="Black" BorderThickness="2" Padding="5" Margin="5" CornerRadius="10" Width="240">

                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Text="Resolutie : "/>
                        <TextBlock Grid.Column="1" Text="{Binding Resitem}"/>
                        <TextBlock Grid.Row="1" Grid.Column="0" Text="Deadline : "/>
                        <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Resdeadline}" />
                        <TextBlock Grid.Row="2" Grid.Column="0" Text="Reden :" />
                        <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Resopmerking}" />
                    </Grid>

                </Border>
            </DataTemplate>

        </ListBox.ItemTemplate>

    </ListBox>

我尝试使用<Style TargetType="ListBoxItem">而不是<Style TargetType="Border">起作用了,但这不是我想要的,我希望更改该listboxitem的Border背景,但我似乎无法访问它。 任何帮助,将不胜感激。

它不起作用,因为您在属性中对BorderBrush硬编码,这是优先的。 更新以使样式不是资源,然后将“ Trigger添加到“ Border本身。

<Window x:Class="Application1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:PE2_WPF_Jelle_Vandekerckhove"
    Title="MainResolutions" Height="500" Width="300" ResizeMode="NoResize" Closed="Window_Closed">
<StackPanel Orientation="Vertical" Background="Aquamarine">
    <TextBlock Text="Mijn Resolutions voor het jaar 2015" Margin="5" Background="White" />
    <ListBox Name="lstResolutions" Height="160">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Border Name="Rand" BorderThickness="2" Padding="5" Margin="5" CornerRadius="10" Width="240">
                    <Border.Style>
                        <Style TargetType="Border">
                            <Setter Property="BorderBrush" Value="Black" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=Resafgehandeld}" Value="True">
                                    <Setter Property="Background" Value="LightGreen" />
                                    <Setter Property="BorderBrush" Value="DarkGreen" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition/>
                            <RowDefinition/>
                            <RowDefinition/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Text="Resolutie : "/>
                        <TextBlock Grid.Column="1" Text="{Binding Resitem}"/>
                        <TextBlock Grid.Row="1" Grid.Column="0" Text="Deadline : "/>
                        <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Resdeadline}" />
                        <TextBlock Grid.Row="2" Grid.Column="0" Text="Reden :" />
                        <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Resopmerking}" />
                    </Grid>
                </Border>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM