如何更改模板列表框中特定元素的样式?

时间:2011-11-21 17:37:33

标签: c# wpf

我有一个列表框定义为:

<ListBox ... ItemTemplate="{DynamicResource User}"/>

ItemTemplate是:

<DataTemplate x:Key="User">
            <DataTemplate.Resources>
                <Style TargetType="{x:Type Border}" x:Key="Ordinal">
                    <Setter Property="Background">
                        <Setter.Value>
                            ...
                        </Setter.Value>
                    </Setter>
                </Style>
                <Style TargetType="{x:Type Border}" x:Key="Current">
                    <Setter Property="Background">
                        <Setter.Value>
                            ...
                        </Setter.Value>
                    </Setter>
                </Style>
            </DataTemplate.Resources>
            <Border CornerRadius="5" Padding="5" Margin="0,0,5,0" Style="{StaticResource Ordinal}">
                ...
            </Border>
        </DataTemplate>

现在我有一个事件处理程序,它应该将提供的索引中的item样式设置为“current”:

void SetCurrent(int Index)
{
    ?
}

怎么做?

修改

使用ItemsControl会更容易吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,我会使用以下组合:

 <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{StaticResource CurrentBrushKey}" />

并设置列表框的SelectedItem(更好 - 不使用SetCurrent()函数,只需从ViewModel中的逻辑开始)

希望这会有所帮助