2009-10-09 82 views
0

我有一個列表框,其中的項目使用ResourceDictionary樣式進行樣式化,然後將其附加到ItemContainerStyle屬性。這讓我的ListBoxItems的邊框厚度讓我們說1。在運行時更改列表框項目樣式

現在我想摺疊項目單獨,所以我使用Visibility.Collapsed但由於某種原因ItemContainerStyle創建的邊界不會消失與列表的其餘部分盒子項目。就好像它已經在我的物品後面創建了一個圖層,並且儘管該物品已摺疊,但仍然存在。

如何在運行時將ListBoxItem(或此額外圖層的)BorderThickness設置爲0?

問候 SK

+0

我不確定要了解您的問題,請問您的一些源代碼? – japf 2009-10-09 14:27:18

+0

你的物品真的崩潰了嗎?即物品的總高度是否正確改變?如果不是的話,那麼這個bordeethickness並不是唯一需要解決的問題。 – 2009-10-09 17:37:18

+0

該項目確實崩潰。但是邊框仍然是:( – 2009-10-10 19:37:52

回答

-1
foreach(ListBoxItem item in listBox1.Items){ 
    item.BorderThickness = new Thickness(0); 
} 

這是答案,但我不會建議,因爲你不能撤消風格帶回什麼是原來的,而不是你應該選擇綁定某些國家的基礎上的一些不同的方法。

+0

我試過這個,它不適用它。反射BorderThickness值顯示{BorderThickness 0,0,0,0},雖然它應該是{BorderThickness 0,0,0,1} – 2009-10-10 19:36:53

+0

this完全不起作用,它將返回datamodel而不是listboxitem – ariso 2010-02-17 16:51:04

0

嘗試使用自定義觸發:

<Style TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
      <Trigger Property="Visibility" Value="Collapsed"> 
       <Setter Property="BorderThickness" Value="0,0,0,0"/> 
      </Trigger> 
      <Trigger Property="Visibility" Value="Visible"> 
       <Setter Property="BorderThickness" Value="0,0,0,1"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

顯然改變你的邊框厚度值,但這應該做

0

我試圖重現該問題的伎倆(或極爲接近這一點),但發現邊界確實崩潰預期:

<StackPanel> 
    <StackPanel.Resources> 
    <BooleanToVisibilityConverter x:Key="BooleanToVisibility" /> 
    <Style x:Key="ListBoxItemStyle" TargetType="ListBoxItem"> 
     <Setter Property="BorderBrush" Value="Black" /> 
     <Setter Property="BorderThickness" Value="1" /> 
    </Style> 
    </StackPanel.Resources> 

    <CheckBox x:Name="_show" 
      Content="Show Item 2" 
      IsChecked="True" /> 

    <ListBox ItemContainerStyle="{StaticResource ListBoxItemStyle}"> 
    <ListBoxItem Content="Item 1" /> 
    <ListBoxItem Content="Item 2"> 
     <ListBoxItem.Visibility> 
     <Binding ElementName="_show" 
       Path="IsChecked" 
       Converter="{StaticResource BooleanToVisibility}" /> 
     </ListBoxItem.Visibility> 
    </ListBoxItem> 
    <ListBoxItem Content="Item 3" /> 
    </ListBox> 
</StackPanel> 

你一定的ListBoxItem的是貝因對象g摺疊(與ListBoxItem中的UI對象相反)?