【问题标题】:How can I bind a ListView Item with data outside from model in UWP?如何将 ListView 项与 UWP 中模型外部的数据绑定?
【发布时间】:2020-04-17 09:18:01
【问题描述】:

我正在尝试将列表视图项与不在模型中的数据绑定。我有这样的模型-

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 绑定不起作用。

【问题讨论】:

    标签: c# xaml uwp


    【解决方案1】:

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

    1. 在 DataTemplate 之外放置一个虚拟 UI 元素(在此示例中为 ListView.Resources 中的一个 Button)并让它绑定 ButtonVisibility。
    2. 在 DataTemplate 中,通过使用 ElementName 指定 binding-source 来绑定其 Visibility。

    .

    <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 或其他内容。并以类似方式绑定。

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2016-11-26
      • 2016-12-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多