如何在列表框项目上设置边框

时间:2017-09-11 13:25:43

标签: c# wpf xaml

我有一个ListBox,其中的项目是从项目源创建的,我需要每个项目都有一个边框,但我不知道我在哪里设置ListBox项目的样式。

<ListBox x:Name="m_list">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Expander IsExpanded="True">
                <CustomUserControl />
            </Expander>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsSource>
        <Binding Path="DataToBeEditied" />
    </ListBox.ItemsSource>
</ListBox>

自定义用户控件是我创建的用户控件,用于编辑DataToBeEdited中的数据ObservableCollection数据

根据我所能找到的,应该有一种方法,但没有解释如何。 我该怎么做?

3 个答案:

答案 0 :(得分:3)

您可以定义ItemContainerStyle

<ListBox>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="BorderThickness" Value="2" />
            <Setter Property="BorderBrush" Value="Red" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

答案 1 :(得分:1)

尝试这样的事情:

<ListBox x:Name="m_list">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Expander IsExpanded="True">
                    <Border BorderThickness="1" BorderBrush="Red">
                        <CustomUserControl />
                    <Border />
                </Expander>
            </DataTemplate>

        </ListBox.ItemTemplate>
        <ListBox.ItemsSource>
            <Binding Path="DataToBeEditied" />
        </ListBox.ItemsSource>
</ListBox>

答案 2 :(得分:0)

以编程方式,每 ListBoxItem 执行一次以下操作:

var lbi = new ListBoxItem();
lbi.Width = 60;
lbi.BorderThickness = new Thickness(1);
lbi.BorderBrush = Brushes.Black;
lbi.Padding = new Thickness(3, 0, 3, 0);
lbi.Margin = new Thickness(3, 0, 3, 0);
lbi.Content = "xyz";
m_list.Items.Add(lbi);