2016-08-23 110 views
0

我有了這個XAML代碼:DataTemplate中爲TextBlock的和ComboBox

<Window x:Class="New_app_2.Window2" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window2" Height="400" Width="500"> 
    <Grid> 
     <StackPanel Orientation="Horizontal"> 
      <ItemsControl ItemsSource="{Binding TestList}"> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding }"/> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ItemsControl> 
      <ComboBox ItemsSource="{Binding Tags}" VerticalAlignment="Top"> 
       <ComboBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding}"></TextBlock> 
         </StackPanel> 
        </DataTemplate> 
       </ComboBox.ItemTemplate> 
      </ComboBox> 
     </StackPanel> 
    </Grid> 
</Window> 

我必然的TextBlock的財產TestList:

private List<string> _testList; 

public List<string> TestList 
{ 
    get 
    { 
     return new List<string>() { "Test1", "Test2", "Test3", "Test4", "Test5" }; 
    } 
    set 
    { 
     _testList = value; 
    } 
} 

和一個ComboBox屬性標籤(看起來幾乎與TestList屬性相同,但具有不同的字符串)。

我的目標是顯示,在這樣的形式:

測試1 [標籤組合框]

的Test2 [標籤組合框]

Test3的[標記組合框]

TEST4 [標籤組合框]

TEST5 [標籤組合框]

相反,我越來越:

Test1的[標籤組合框]

的Test2

Test3的

TEST4

TEST5

後來,我也喜歡能夠獲取每個TestList元素選擇哪些選項的信息。

也許這很容易,但我剛開始學習WPF。

回答

1

難道你不應該只是將ComboBox轉換成ItemsControl.ItemTemplate然後呢? (然後,您將需要包裝在另一個面板都TextBlockComboBox(例如StackPanel)。)

如果所有ComboBoxes應該包含您需要更改綁定來訪問外部DataContext相同的項目。

<ComboBox ItemsSource="{Binding DataContext.Tags, 
           RelativeSource={RelativeSource AncestorType=ItemsControl}}"> 
+0

它的工作原理!但我真的不明白。 – Loreno

+0

另一件事:我需要做什麼才能閱讀用戶在每個ComboBox中選擇的內容? – Loreno

+0

閱讀['Binding' class](https://msdn.microsoft.com/en-us/library/system.windows.data.binding(v = vs.110).aspx)及其屬性/相關的課程,這非常重要。還有[此概述](https://msdn.microsoft.com/en-us/library/vstudio/ms752347(v = vs.100).aspx)。在這裏,您將綁定源更改爲文檔元素,因爲當前的'DataContext'(這是隱式源)已更改爲當前的模板項目。因爲源代碼現在是一個元素,您需要專門在綁定路徑中獲取'DataContext'。 –

相關問題