Ich arbeite an einem neuen WPF-Projekt und kämpfe mit der Bindung einer TextBox in DataGrid an eine Liste von Objekten in WPF. Kann mir jemand helfen, zu reparieren?Wie binden Sie eine TextBox in DataGrid an eine Liste in WPF?
Dies ist mein Code (vereinfachte Version) zum Generieren der Datagrid-Zeilen durch Bindung meiner Orders Objekt. Der Benutzer kann die Auftragspositionen ändern und in das Unterstreichungsobjekt einbinden. Sobald Benutzer klickte die Lesen Sie Bestellungen Schaltfläche Ich zeige die Änderungen im Textblock. Problem: Die Änderungen in TextBox werden nicht in das Orders-Objekt aktualisiert.
ObservableCollection<StxOrdr> Orders = new ObservableCollection<StxOrdr>();
private void Window_Initialized(object sender, EventArgs e)
{
Orders.Add(new StxOrdr() { ID = 1, Desc = "Order-#1", Item1 = "11", Item2 = "12", Item3 = "13" });
Orders.Add(new StxOrdr() { ID = 2, Desc = "Order-#2", Item1 = "21", Item2 = "22", Item3 = "23" });
Orders.Add(new StxOrdr() { ID = 3, Desc = "Order-#3", Item1 = "31", Item2 = "32", Item3 = "33" });
Dg2.ItemsSource = Orders;
}
private void ReadUpdatedOrders(object sender, RoutedEventArgs e)
{
TxtBlk.Text = "";
foreach (StxOrdr odr in Orders)
{
TxtBlk.Text += string.Format("{0}: {1} - {2} - {3}\n", odr.Desc, odr.Item1, odr.Item2, odr.Item3);
}
}
Fenster Xml
<DataGrid x:Name="Dg2" HorizontalAlignment="Left" Margin="21,295,0,0" VerticalAlignment="Top" Height="230" Width="451"
AutoGenerateColumns="false" ItemsSource="{Binding Source=Orders}" >
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}" />
<DataGridTextColumn Header="Desc" Binding="{Binding Desc}" Width="80"/>
<DataGridTextColumn Header="Item 1" Binding="{Binding Item1}" Width="60"/>
<DataGridTextColumn Header="Item 2" Binding="{Binding Item2}" Width="60"/>
<DataGridTemplateColumn Header="Item 3" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Item3, Mode=OneWayToSource}" Width="60" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<TextBlock x:Name="TxtBlk" HorizontalAlignment="Left" Margin="489,295,0,0" TextWrapping="Wrap" Text=" Updated order details:"
VerticalAlignment="Top" Height="176" Width="408" Background="#FFFFFCBC"/>
<Button x:Name="Btn2_Copy" Content="Read Orders" HorizontalAlignment="Left" Margin="489,476,0,0"
VerticalAlignment="Top" Width="94" Click="ReadUpdatedOrders"/>
Screenshot des UI-Fenster
ja es funktioniert. Danke, Alter. – Chindil