2014-07-16 29 views
-1

我需要創建與自定義listboxitem的內容列表框。 我需要從代碼背後做到這一點的主要問題,我的意思是我不能使用數據綁定功能(請不要詢問這:))。正確的方式與我的數據創建listboxitem沒有數據綁定

所以我的想法是創建堆棧面板,然後將其分配給創建ListBoxItem的內容屬性。 我看到的問題 - 這個堆疊面板將有許多其他控件像按鈕,標籤,進度。所以代碼看起來很大,很難對其進行設計。

有沒有辦法爲這個數據模板創建xaml(描述樣式和元素),然後使用它來創建填充並將新的listboitem添加到列表框。

+0

那麼爲什麼不直接使用'XAML'呢?使用代碼隱藏(而不是XAML)的好處是動態添加帶有動態選項的新控件。 –

+2

*正確的方式與我的數據創建listboxitem沒有數據綁定* ...什麼? 'DataBinding' *是正確的方式。考慮到這一點......「我走了」。 – Sheridan

+0

如果您不想使用數據綁定,那並不意味着您無法使用XAML構建UI。只要正常使用它,並記住給你的元素自己的'Name',這樣你就可以在你的代碼後面引用它們。 –

回答

0

您可以爲ListBoxItem定義ControlTemplate。

<Window.Resources> 
    <Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem">    
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border> 
         <StackPanel> 
          <TextBlock Text="{TemplateBinding Content}"/> 
         </StackPanel> 
        </Border>       
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 
<Grid> 
    <ListBox> 
     <ListBoxItem>Item1</ListBoxItem> 
     <ListBoxItem>Item2</ListBoxItem> 
     <ListBoxItem>Item3</ListBoxItem> 
     <ListBoxItem>Item4</ListBoxItem> 
     <ListBoxItem>Item5</ListBoxItem> 
    </ListBox> 
</Grid> 
0

您可以爲您的StackPanel XAML文件,設置其x:類=「MyNamespace.MyStackPanel」,然後定義您的公共部分類MyStackPanel根據需要和使用它的情況下,無論是在代碼或XAML的

相關問題