【发布时间】:2009-10-14 12:55:28
【问题描述】:
我无法让我的绑定在 Detail ListView 上工作。我在下面粘贴了我所有的 MVVM 模式代码。请帮忙!!!
我的观点: DirectoryDetailView.cs
<UserControl x:Class="S2.Views.DirectoryDetailView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView Grid.Column="0" ItemsSource="{Binding Path = DirectoryDetails}"
IsSynchronizedWithCurrentItem="True"
SelectedItem="{Binding SelectedDirName, Mode=TwoWay}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path = FileName}"
Header="File Name"/>
</GridView>
</ListView.View>
</ListView>
<ListView Grid.Column="1" Margin="10,0,0,0" ItemsSource="{Binding Path = DirectoryDetails}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path = FileDetails.Length}"
Header="Length"/>
<GridViewColumn DisplayMemberBinding="{Binding Path = FileDetails.LastAccessTime}"
Header="LastAccessTime"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
我的模特:
public class DirectoryModel : INotifyPropertyChanged
{
private string _fileName;
private DateTime _createdTime;
public string FileName
{
get
{
return _fileName;
}
set
{
_fileName = value;
RaisePropertyChanged("FileName");
}
}
private IEnumerable<FileDetails> _fileDetails;
public IEnumerable<FileDetails> FileDetails
{
get
{
return _fileDetails;
}
set
{
_fileDetails = value;
RaisePropertyChanged("FileDetails");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
protected void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler propertyChanged = PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
public class FileDetails
{
public long Length { get; set; }
public DateTime LastAccessTime { get; set; }
}
我的视图模型:
public class DirectoryViewModel : BaseViewModel
{
private IEnumerable<DirectoryModel> _directoryDetails;
public IEnumerable<DirectoryModel> DirectoryDetails
{
get
{
var service = GetService<IDirectoryService>();
_directoryDetails = service.GetDirectoryDetails();
return _directoryDetails;
}
set
{
if(_directoryDetails != value)
{
_directoryDetails = value;
base.RaisePropertyChanged("DirectoryDetails");
}
}
}
private DirectoryModel _selectedDirName;
public DirectoryModel SelectedDirName
{
get
{
return _selectedDirName;
}
set
{
_selectedDirName = value;
base.RaisePropertyChanged("SelectedDirName");
}
}
}
请告诉我,我做错了什么?
谢谢, AG
【问题讨论】:
-
你的问题到底是什么?
-
您忘记粘贴可能包含您遇到问题的绑定的 XAML?
-
我已经粘贴了我的 Xaml 代码,但它没有出现在板上。不知道为什么?。我尝试多次编辑帖子仍然无法显示 Xaml。你知道可能是什么问题吗?
-
这个问题与 XML 括号有关(我认为)......可能是 SO 代码中的一个错误......我今天也遇到了 XML 代码的问题
-
我现在已经设法让我的 xaml 显示出来,想知道是否有人可以提供帮助
标签: c# wpf data-binding mvvm