我以熟悉的方式设置了两个这样的列表框:
<ListBox HorizontalAlignment="Left" Margin="78,35,0,-32" Grid.Row="1" Width="300" ItemsSource="{Binding ListOfItems}" Grid.RowSpan="3" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Number}" />
<TextBlock Text="{Binding Date, StringFormat={}{0:MM/dd/yy}}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
一个列表框用于非过期日期,它是相应的,另一个列表框用于过期日期,它是相应的数字。
我想知道如何调整条件或属性以正确绑定,以便属性仅在满足条件时绑定。
我已经尝试了下面的条件,但是所有日期(无论是否过期或未绑定到第一个列表框)或我的属性都没有正确绑定。
我想看一个关于如何设置它的例子。
以下是我的视图模型中的条件示例。
ListInformation tempList = new ListInformation();
if (DateTime.Compare(Date, DateTime.Now) > 0)
{
Date = tempList.Date;
Number = tempList.Number;
}
else if (DateTime.Compare(Date, DateTime.Now) < 0)
{
Exp_Date = tempList.Date;
Exp_Number = tempList.Number;
}
编辑:
所以,这是我目前的设置。
我有一个xml文件,当用户点击导入按钮时会被读取。我有一个类/模型,它从xml中删除所有关键项并将它们保存到数据库中。我只想在我的视图中将该xml文件中的数字和日期显示到我的列表框中。在我看来,我有两个列表框...一个用于非过期日期,它是一个数字,一个用于过期日期和它的数字。
答案 0 :(得分:1)
我认为它应该足够简单。
创建两个列表:
List<YourType> ListExpiry = new List<YourType>();
List<YourType> ListNonExpiry = new List<YourType>();
然后根据日期添加项目:
ListExpiry = YourSource.Where(x => x.Date > DateTime.Now).Select(x => x)ToList();
ListNonExpiry = YourSource.Where(x => x.Date < DateTime.Now).Select(x => x)ToList();
注意:
在XAML中:
对于First ListBox:
ItemsSource="{Binding ListExpiry}"
对于第二个ListBox:
ItemsSource="{Binding ListNonExpiry}"
更新:
在MainViewModel中:
public static List<YourType> ListExpiry = new List<YourType>();
public static List<YourType> ListNonExpiry = new List<YourType>();
您想要设置值的位置(称之为):
MainViewModel.ListExpiry = .....
MainViewModel.ListNonExpiry = .....
在App.xaml文件中:
<yourNamespacePrefix:MainViewModel x:Key="MainViewModelResource" />
e.g。
<Self:MainWindowViewModel x:Key="mainWindowViewModel" />
您还需要在XAML文件中更改dataContext,如:
<Window ............. DataContext="{StaticResource MainViewModelResource}" />
答案 1 :(得分:0)
取决于您的日期集合的填充方式。
我会创建两个集合并分别绑定它们。在getter中添加你的条件......
public ICollection<listType> ExpiredDates{ get { return from p in source where p.Date < DateTime.Now select;}}
然后,当您的日期被填充时,无论如何,请在这些属性上调用PropertyChanged以通知视图更新。您可能还需要一个占位符集方法。
OnPropertyChanged("ExpiredDates");
借口代码质量,iPad在编码时很糟糕。