ObservableCollectionの "struct-like"アイテムからTextChangedイベントを持つTextBoxへの一方向バインディングを実現したいと考えています。このアイデアは、ItemのCommentsフィールドがTextBoxに蓄積すると、TextBoxが自動的にスクロールして最後の行が常に表示されるようになっているということです。コレクションはListViewにバインドされていますが、TextBoxにバインドされた読み取り専用です。私は、ResultViewModelに別のメソッドを追加するのではなく、XAMLでそれを行うことを好みます。これを行うにはどうしたらいいですか? TIAバインディングObservableCollection <Item> To TextBox(UWP)
// ViewModel
public class Item
{
public string First { get; set; }
public string Last { get; set; }
public string Comments { get; set; }
}
public class ResultViewModel
{
private ObservableCollection<Item> items = new ObservableCollection<Item>();
public ObservableCollection<Item> Items { get { return items; } }
// member functions
}
public ResultViewModel ViewModel { get; set; }
// What I have
<ListView x:Name="myListView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
ItemsSource="{x:Bind ViewModel.Items}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Item">
<StackPanel>
<TextBox Text="{x:Bind First}"/>
<TextBlock Text="{x:Bind Last}"/>
<TextBlock Text="{x:Bind Comments}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
// What I want
<TextBox Text="{x:Bind Comments}"/>
あなたが望むものを正確に理解するのは少し難しいです。ユーザーが変更できないTextBoxを持っていますが、Commentsプロパティの値が変更され、バインドされたTextBoxを下にスクロールしたい場合は、 –
それは正しいですが、TextBoxはユーザーが変更することはできませんが、Commentsプロパティが累積してTextBoxを超えているので、TextBoxを最後までスクロールして最後の行を表示します。これは、TextBoxにバインドしたいという背後にある動機です。 TextBoxがListViewの内部に埋め込まれているこの場合、スクロール・ツー・ザ・ボトム・ビヘイビアを実装する方法は不明です。 –