現在、私はYAML辞書を解析しているアプリケーションを持っています。私はこのようになりますLine
という名前のモデルを持っている -UWP/XAMLの辞書の双方向データバインディング
public class Line
{
private ObservableDictionary<string, string> language = new ObservableDictionary<string, string>();
public Line()
{
Language = new Dictionary<string, string>();
}
// used with the YAML parser
[YamlMember(Alias = "language")]
public Dictionary<string, string> Language { get; set; }
}
あなたはおそらく私が標準タイプではないObservableDictionary
を、使用していることに気付きました。私はこのコードをother StackOverflow answerから取った。私が理解しているように、それはただ必要なINotifyPropertyChanged
インターフェイスを設定しているだけです。
とにかく、私のLine
の場合は、ListView
には、言語の略語とテキストボックスで表される翻訳辞書が入っています。私が話していることをよりよく例示するために、ここにグラフィックがあります。私App.xaml
で
、私は定義された私のListViewのためのDataTemplate
を持っている - 一緒に、彼らは次のようになります。それが正常に動作する必要がありますように
<ListView
ItemTemplate="{StaticResource LinesTemplateItem}"
ItemsSource="{Binding Value.Language}"
SelectionMode="None">
</ListView>
...
<DataTemplate x:Key="LinesTemplateItem">
<StackPanel Background="Transparent">
<TextBlock Text="{Binding Key}" />
<TextBox Text="{Binding Value, Mode=TwoWay}" />
</StackPanel>
</DataTemplate>
すべてがそうです。私のデータが正しく表示されます。私はいくつかの理由でデータバインディングは、内部のテキストの代わりに全体のUIコントロールをターゲットにしていることを推測する、エラーから
Error: Cannot save value from target back to source.
BindingExpression: Path='Value' DataItem='Windows.Foundation.Collections.IKeyValuePair`2<String,String>';
target element is 'Windows.UI.Xaml.Controls.TextBox' (Name='null');
target property is 'Text' (type 'String').
:私は値を変更する場合しかし、それは誤りで基礎となるソースを更新しません。それの。私はしばらく検索してきましたが、このエラーを修正する方法を見つけることができません。どんな助けもありがとうございます。ありがとう。