绑定和x:Bind,一个正在工作
Binding and x:Bind, one is working
我正在用绑定和 x:Bind 做一些测试,我发现了一些有趣的事情。
XAML
<ListView Background="White" ItemsSource="{x:Bind ViewModel.CurrenciesViewModel.Currencies.Currencies}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="model:Currency">
<StackPanel>
<TextBlock Foreground="Red" Text="1"/>
<TextBlock Foreground="Red" Text="{x:Bind Name}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
好的,首先 x:Bind 是具有 属性 CurrenciesViewModel(模型名称 CurrencyListViewModel)的 viewModel,其中具有 属性 货币(模型名称 CurrencyList),其中具有 属性 货币它是 ObservableCollection
所以当我像这样添加对象时这是有效的
CurrenciesViewModel.Currencies.Currencies.Add(new Currency() { Name = "test" });
CurrenciesViewModel.Currencies.Currencies.Add(new Currency() { Name = "test2" });
但是当我使用一种方法通过我的 DataProvider 下载我的模型时(使用 xml 简单休息)
Task<CurrencyList> GetCurrencyList();
所以我的主 ViewModel 中的第一个 属性 CurrencyViewModel 是这样的
CurrenciesViewModel = new CurrencyListViewModel(await DataProvider.GetCurrencyList());
那我的listView是空的!我检查了我的数据是否已下载,是的,它是......
我用绑定更改了 x:Bind,一切正常。
如果你们需要,我可以复制粘贴所有 类。但请告诉我 wtf ;)
问题在于默认绑定在 {x:Bind} 与 {Binding} 中的工作方式。在 {x:Bind} 中,默认绑定是 OneTime,但在 {binding} 中,默认绑定是 OneWay。因此,即使您更新视图模型,默认情况下 x:binding 中的数据也不会更改。
To Resolve Change
<TextBlock Foreground="Red" Text="{x:Bind Name}"/>
To:
<TextBlock Foreground="Red" Text="{x:Bind Name Mode=OneWay} "/>
我正在用绑定和 x:Bind 做一些测试,我发现了一些有趣的事情。
XAML
<ListView Background="White" ItemsSource="{x:Bind ViewModel.CurrenciesViewModel.Currencies.Currencies}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="model:Currency">
<StackPanel>
<TextBlock Foreground="Red" Text="1"/>
<TextBlock Foreground="Red" Text="{x:Bind Name}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
好的,首先 x:Bind 是具有 属性 CurrenciesViewModel(模型名称 CurrencyListViewModel)的 viewModel,其中具有 属性 货币(模型名称 CurrencyList),其中具有 属性 货币它是 ObservableCollection
所以当我像这样添加对象时这是有效的
CurrenciesViewModel.Currencies.Currencies.Add(new Currency() { Name = "test" });
CurrenciesViewModel.Currencies.Currencies.Add(new Currency() { Name = "test2" });
但是当我使用一种方法通过我的 DataProvider 下载我的模型时(使用 xml 简单休息)
Task<CurrencyList> GetCurrencyList();
所以我的主 ViewModel 中的第一个 属性 CurrencyViewModel 是这样的
CurrenciesViewModel = new CurrencyListViewModel(await DataProvider.GetCurrencyList());
那我的listView是空的!我检查了我的数据是否已下载,是的,它是...... 我用绑定更改了 x:Bind,一切正常。
如果你们需要,我可以复制粘贴所有 类。但请告诉我 wtf ;)
问题在于默认绑定在 {x:Bind} 与 {Binding} 中的工作方式。在 {x:Bind} 中,默认绑定是 OneTime,但在 {binding} 中,默认绑定是 OneWay。因此,即使您更新视图模型,默认情况下 x:binding 中的数据也不会更改。
To Resolve Change
<TextBlock Foreground="Red" Text="{x:Bind Name}"/>
To:
<TextBlock Foreground="Red" Text="{x:Bind Name Mode=OneWay} "/>