У меня есть список объектов, отображаемых в представлении списка, и я хочу обновить значение одного из объектов, когда установлен другой флажок. Затем я хочу, чтобы текстовое поле отображало это значение для обновления с этим новым значением. В настоящее время мне удалось получить объект, удерживающий другое значение, и увеличивать его, но не отображать новое значение.MVVM: значения привязки не обновляются внутри списка.
<ListView Margin="0,5,5,5" Name="TruckModels" DockPanel.Dock="Top" Height="400" Width="1310" ItemsSource="{Binding ListOfTrucks}" HorizontalAlignment="Right">
<ListView.View>
<GridView>
<!--New Version column-->
<GridViewColumn Header="New Version" Width="105">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBox AcceptsReturn="True" Height="Auto" Width="80" IsReadOnly="False"
x:Name="CurrentVersionTB" TextAlignment="Left" TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
Text="{Binding NewVersionVal}"
Foreground="#FFCD0000"
DataContextChanged="CurrentVersionTB_DataContextChanged"/>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--Auto-Increment Version? column-->
<GridViewColumn Header="Auto-Increment Version?" Width="105">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<CheckBox IsChecked="{Binding IsSelectedAINV}" Checked="AutoIncrement_Checked" />
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
CS код:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//List<Truckinfo> items = new List<Truckinfo>();
ObservableCollection<Truckinfo> items = new ObservableCollection<Truckinfo>();
xmlparsing(items);
TruckModels.ItemsSource = items;
}
private void ScrollViewer_MouseWheel(object sender, MouseWheelEventArgs e)
{
ScrollViewer scrollviewer = sender as ScrollViewer;
if (e.Delta > 0)
{
scrollviewer.LineUp();
}
else
{
scrollviewer.LineDown();
}
e.Handled = true;
}
private void AutoIncrement_Checked(object sender, RoutedEventArgs e)
{
Truckinfo item = (Truckinfo)(sender as CheckBox).DataContext;
int i;
int.TryParse(item.NewVersionVal, out i);
i++;
item.NewVersionVal = i.ToString();
Debug.WriteLine(item.NewVersionVal);
e.Handled = true;
}
private void CurrentVersionTB_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
TextBox t = sender as TextBox;
t.BindingGroup.UpdateSources();
}
}
Я пытался использовать интерфейс IncP, но он не хочет, чтобы заполнить таблицу с объектами.
Пожалуйста, rpovide yout 'Truckinfo' класс. Возможно, ему нужно реализовать 'INotifyPropertyChanged'. –
'Truckinfo' не реализует' INotifyPropertyChanged', это то, что вы говорите? * «он не хочет заполнять таблицу объектами» * может означать практически что угодно, так как я не могу угадать, что это означает «это», «таблица» или «объекты». Можете ли вы описать, какова была настоящая проблема? Вы были бы поражены тем, сколько вещей в этом мире можно описать словом «это». В основном все они. Так что трудно сузить. Я имею в виду, там очень много вещей, просто видно из моего стола. –