2014-11-22 76 views
2

我新的WPF的「當前」項目,並一直在努力解決這了一整天:如何文本框的文本綁定到集合

我有六個公共屬性(瞭解WPF只綁定到一個列表公共財產)。

在我的主窗口中,我有兩個控件;一個三列數據網格和三個文本框。我希望將三個datagrid列數據綁定到我的List的三個屬性,並將我列表的剩餘三個屬性數據綁定到文本框(每個文本框一個屬性)。 datagrid數據綁定工作正常:myDataGrid.ItemsSource = myList; //specific column binding is in xaml as expected eg Binding="{Binding Title, Mode=TwoWay}"

問題在於文本框。我打算讓文本框在底層列表中顯示「當前項目」,這意味着當用戶選擇不同的數據網格行時,文本框應該更改爲顯示「當前選定列表項目」的數據綁定屬性的值。簡單地結合這樣的texboxes沒有做的工作:

Text="{Binding SomePropertyName}" 

我看了一下,以便使用CollectionViewSource使用正斜槓在XAML綁定,方便「當前項目」三分球,但沒有運氣有兩種,即

<Textbox Text="{Binding Path=/someProperty}"

我也看到了有關數據綁定的人使用「的ElementName」綁定數據網格/列表視圖項,但這不是我後。我認爲應該很容易,至少在winforms中是這樣的!

在此先感謝。

回答

1

這很容易,但有一件事要注意。默認情況下,您可以在DataGrid中選擇多行,在這種情況下,文本框中只會顯示一個值。您可以通過在數據網格上設置SelectionMode="Single"來更改此設置。

<StackPanel> 
    <DataGrid x:Name="PersonsGrid" ItemsSource="{Binding Persons}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="First name" Binding="{Binding FirstName}" /> 
      <DataGridTextColumn Header="Last name" Binding="{Binding LastName}" /> 
      <DataGridTextColumn Header="Age" Binding="{Binding Age}" /> 
     </DataGrid.Columns> 
    </DataGrid> 

    <TextBox Text="{Binding SelectedItem.Address, ElementName=PersonsGrid}" /> 
</StackPanel> 

這工作,因爲SelectedItem的基本類型是在我的例子Person

+0

謝謝Ondrej,非常感謝。還要感謝'SelectionMode'提示。 – CoverG 2014-11-22 09:09:56

+0

@CoverG很高興我能幫到你。 – 2014-11-22 09:12:56