各位程序员,
我目前陷入困境,因为我无法弄清楚这些TwoWay绑定的工作方式。我也有一个带有IInspectables的IObservableVector的SETTING类和一个带有IInspectables的IObservableVector的Page类。在SETTING类中,向量存储盒装winrt :: hstring,而Page类的向量存储SETTING类。
我试图将hstring绑定到listviewitems,并将listview绑定到Pivotitems,但是SETTING类的向量不会被更新。 但是,当我将向量的一个项目绑定到文本框时,它可以很好地工作,并且也可以更新列表视图中的第一个文本框。
<Pivot HorizontalContentAlignment="Left" Margin="10" ItemsSource="{x:Bind settings, Mode=OneWay}">
<Pivot.ItemTemplate>
<DataTemplate x:DataType="local:SETTING">
<StackPanel>
<ListView ItemsSource="{x:Bind setting_values, Mode=OneWay}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBox Text="{Binding Mode=TwoWay}" HorizontalAlignment="Stretch"></TextBox>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
<Setter Property="Padding" Value="0"></Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
<TextBox Text="{Binding setting_values[0], Mode=TwoWay}"></TextBox>
</StackPanel>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
有人知道我做错了什么,为什么一个双向绑定有效而另一个不起作用
谢谢您的帮助。
答案 0 :(得分:0)
我通过以下设置解决了该问题:
hidden
// SETTING.idl
runtimeclass SETTING : Windows.UI.Xaml.Data.INotifyPropertyChanged
{
String description;
String value;
}
//SETTING_VIEWMODEL.idl
import "SETTING.idl";
runtimeclass SETTINGS_VIEWMODEL
{
Windows.Foundation.Collections.IObservableVector<SETTING> settings_vector{ get; };
}
现在,您可以使用TwoWay绑定来绑定值:
//SETTINGS_PAGE.idl
import "SETTINGS_VIEWMODEL.idl";
[default_interface]
runtimeclass SETTINGS_PAGE : Windows.UI.Xaml.Controls.Page
{
SETTINGS_PAGE();
SETTING_VIEWMODEL settings{ get; };
}