c# - 如何将 ListView 项与 UWP 模型外部的数据绑定(bind)?

标签 c# xaml uwp

我正在尝试将 ListView 项与不在模型中的数据绑定(bind)。我有这样的模型-

public class Recording
{
        public string ArtistName { get; set; }
        public string CompositionName { get; set; }
        public DateTime ReleaseDateTime { get; set; }
}
public ObservableCollection<Recording> Recordings = new ObservableCollection<Recording>();
public Visibility ButtonVisibility = Visibilty.Collasped;

我试过的代码如下:

<ListView ItemsSource="{x:Bind ViewModel.Recordings}"
HorizontalAlignment="Center" VerticalAlignment="Center">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Recording">
            <Button Content="OK" Visibility="{Binding ButtonVisibility, Mode=OneWay}"/>
            <TextBlock Text="{Binding ArtistName, Mode=OneWay }"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在这里,ButtonVisibility 绑定(bind)不起作用。

最佳答案

无需额外的 C# 代码即可实现的简单方法是 ...

  1. 在 DataTemplate 之外放置一个虚拟 UI 元素(在本例中为 ListView.Resources 中的一个 Button)并让它绑定(bind) ButtonVisibility。
  2. 在 DataTemplate 中,通过使用 ElementName 指定绑定(bind)源来绑定(bind)其可见性。

.

<ListView ItemsSource="{x:Bind ViewModel.Recordings}" HorizontalAlignment="Center" VerticalAlignment="Center">
    <ListView.Resources>
        <Button x:Name="RelayButtonVisibility" Visibility="{x:Bind ViewModel.ButtonVisibility, Mode=OneWay}"/>
    </ListView.Resources>
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Recording">
            <StackPanel Orientation="Horizontal">
                <Button Content="OK" Visibility="{Binding Visibility, ElementName=RelayButtonVisibility}"/>
                <TextBlock Text="{Binding ArtistName, Mode=OneWay }"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

如果您不喜欢使用额外的 UIElement,请在 Page 类中定义您自己的 MyVisibility DependencyProperty 或其他内容。并类似地绑定(bind)它。

关于c# - 如何将 ListView 项与 UWP 模型外部的数据绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61255553/

相关文章:

c# - 避免集合已修改错误

c# - 如何返回一个带有我事先不知道的通用参数的函数?

c# - 基本 WPF 验证

c# - 如何获取所有子文件夹及其文件 - UWP

c# - UWP - RichTextBox 背景/前景色在悬停/焦点时改变

c# - 在Excel顶部插入记录

c# - 搜索换行符 C#.net

c# - 更改页面上 AppBarButton 的颜色

c# - WPF 重载自定义绑定(bind)构造函数

c# - vstest.console.exe 可以在没有安全证书的情况下运行 appx