2012-05-22 3 views
1

프로그래밍 방식으로 ListBox에 추가하려고하는 사용자 지정 ListBoxItem이 있는데이 항목의 내용을 줄 바꿈하고 싶습니다.프로그래밍 방식으로 추가 된 사용자 지정 목록 상자의 단어 포장

class PresetListBoxItem : ListBoxItem 
{ 
    public uint[] preset; 

    public PresetListBoxItem(uint[] preset = null, string content = "N/A") 
     : base() 
    { 
     this.preset = preset; 
     this.Content = content; 
    } 
} 

그리고 XAML :

<ListBox Name="sortingBox" Margin="5,5,0,5" Width="150" MaxWidth="150" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="Black" BorderThickness="2" CornerRadius="3" Margin="3"> 
       <TextBlock Text="{Binding Path=Text}" TextWrapping="WrapWithOverflow" /> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

그리고 추가 수행하는 코드 :

PresetListBoxItem item = new PresetListBoxItem(); 
item.preset = new uint[] { }; 
item.Content = "This is a test of an extended line of text."; 
sortingBox.Items.Add(item); 

내가 코드를 실행 여기에

사용자 정의 ListBoxItem의입니다 항목이 상자에 추가되지만 테두리가 전혀 표시되지 않고 줄을 줄 바꿈하지 않습니다.

나는 SO와 Google의 답을 찾아 보았고 ListBox와 ListView를 모두 사용했지만 아무 것도 작동하지 않는 것 같습니다.

답변

0

ListBoxItem은 콘텐츠 각각 항목에 대한 컨테이너입니다. 자신의 ListBoxItem을 사용하려면 컨테이너가 아닌 항목의 템플리트를 덮어 씁니다. 그런 다음 TextBlock에서 올바른 바인딩을 사용하려면 PresetListBoxItem의 Content 속성에 바인딩해야합니다.

그러나 나는 이것이 최선의 방법이 아니라고 생각합니다. ListBoxItem에서 파생 된 이유는 무엇입니까? 이 작업을 수행하지 않으면 XAML이 즉시 정상적으로 작동합니다.

item.Text = "This is a test of an extended line of text."; 

class PresetListBoxItem 
{ 
    public uint[] preset; 
    public string Text { get; set; } 

    public PresetListBoxItem(uint[] preset = null, string content = "N/A") 
     : base() 
    { 
     this.preset = preset; 
     this.Text = content; 
    } 
} 
+0

누군가 ListBox에서 해당 항목을 선택하면 관련 uint []를 가져와야하기 때문에 ListBoxItem에서 파생되는 사용자 지정 클래스를 사용하고 있습니다. 내가 그것을 할 수 생각할 수있는 유일한 다른 방법은 ListBoxItem 함께 목록에 인덱스를 어떻게 든 연결할 수 있으며, 일을 오류가 발생하기 쉬운 방식으로 보인다. – Abion47

+0

ListBoxItem의 DataContext에서 uint []를 사용하여 클래스를 찾을 수 있습니다. – LPL

관련 문제