リストビューに表示されているオブジェクトのリストがあり、別のチェックボックスをオンにしたときにそのオブジェクトの値を更新したい。私はその値を表示するテキストボックスがこの新しい値で更新されるようにします。 現在、オブジェクトを取得して別の値を保持していますが、新しい値を表示することはできません。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();
}
}
私は、統合ネットワーク制御システムのインタフェースを使用しようとしましたが、それはオブジェクトとテーブルを移入する必要はありません。
あなたはTruckinfoクラスをご利用ください。おそらく 'INotifyPropertyChanged'を実装する必要があります。 –
'Truckinfo'は' INotifyPropertyChanged'を実装していません、それはあなたが言っていることですか? *「それはテーブルをオブジェクトで埋めることを望んでいない」*「それ」、「テーブル」、または「オブジェクト」が参照するものを推測する方法がないため、事実上何かを意味する可能性があります。実際の問題が何だったのか説明できますか?あなたは、この世界のどのくらいのものが "それ"という言葉で記述できるかに驚かれるでしょう。基本的にそれらのすべて。狭くするのは難しいです。私の机から見えて、そこにはたくさんのものがあります。 –