use*_*719 5 xaml windows-runtime winrt-xaml
我想使用FlipView显示一些项目并开始显示特定项目.
为此,我定义了一个视图模型类:
class MyDataContext
{
public MyDataContext()
{
Items = new List<MyClass>();
Items.Add(new MyClass("1"));
Items.Add(new MyClass("2"));
Items.Add(new MyClass("3"));
SelectedItem = Items[1];
}
public List<MyClass> Items { get; set; }
public MyClass SelectedItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如您所见,所选项目不是第一项.
现在为XAML:
<FlipView ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}"></FlipView>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,翻转视图显示第一个项目,而不是第二个项目.
这是故意的吗?还是一个错误?
Fil*_*kun 10
试试这个
<FlipView
ItemsSource="{Binding Items}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
与FlipView有相同的问题,无法使BindableBase或TwoWay选项工作.因为列表的顺序对我来说不是一个主题,所以我创建了一个重新排序ItemsSource的方法,从SelectedItem开始,作为Collection中的第一个项目.
在底层代码中,结果是FlipView的新ItemsSource,而不是之前的List元素.
public static List<T> ReorderList(List<T> elements, T selectedElement)
{
var elementIndex = elements.FindIndex(x => x.Id == selectedElement.Id);
var result = new List<T>();
foreach (var item in elements)
{
if (elementIndex .Equals(elements.Count))
{
elementIndex = 0;
}
result.Add(elements[elementIndex]);
elementIndex++;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4582 次 |
| 最近记录: |