gpt4 book ai didi

c# - ListView 双向编译绑定(bind) (x :Bind)

转载 作者:太空狗 更新时间:2023-10-29 23:50:36 25 4
gpt4 key购买 nike

我想显示几个名字,我希望它们是可编辑的。所以我使用了一个 ObservableColection,并使用新的 x:Bind 功能将它绑定(bind)到一个 ListView。

这是我的 XAML:

    <ListView>
<ListView ItemsSource="{x:Bind ViewModel.Players}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>

<ListView.ItemTemplate>
<DataTemplate xmlns:model="using:Flechette.Model" x:DataType="model:Player">
<TextBox Text="{x:Bind Name, Mode=TwoWay}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

还有我的代码:

public sealed partial class GameSettingsPage : Page
{
ViewModel.GameSettingsViewModel ViewModel { get; set; }

public GameSettingsPage()
{
InitializeComponent();
DataContextChanged += (s, e) => ViewModel = DataContext as ViewModel.GameSettingsViewModel;
}
}

问题是 TwoWay 绑定(bind)编译失败,我收到错误 CS1061 'WeakReference' 不包含 'LostFocus' 的定义并且没有扩展方法 'LostFocus' 接受类型为 'WeakReference' 的第一个参数找到(您是否缺少 using 指令或程序集引用?)

我该如何解决?

最佳答案

这似乎是 Windows 10 SDK 预览版中的一个问题。给定以下代码:

MainPage.xaml:

     <ListView x:Name="Players">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>

<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Player">
<TextBox Text="{x:Bind Name, Mode=TwoWay}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

MainPage.xaml.cs:

    private ObservableCollection<Player> players = new ObservableCollection<Player>();
public MainPage()
{
this.InitializeComponent();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.players.Add(new Player());
this.players.Add(new Player());
this.players.Add(new Player());
this.players.Add(new Player());
this.players.Add(new Player());

this.Players.ItemsSource = players;
}

Player.cs:

public class Player : INotifyPropertyChanged
{
private string name;

public string Name
{
get { return name; }
set
{
if (value == name) return;
name = value;
OnPropertyChanged();
}
}

public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

编译和应用程序工作并提供预期的行为:

Working app

关于c# - ListView 双向编译绑定(bind) (x :Bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30647724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com