我喜欢设计时间数据,特别是在创建小窗口小部件时。对于这个非常简单的用例,我无法绑定到我在xaml中创建的设计时列表的属性。
请在下面找到我的ViewModel,View和SampleData;
视图模型
internal class SummaryViewModel : ViewModelBase
{
public string Title { get; set; }
public IList<Person> PersonList { get; set; }
internal SummaryViewModel()
{
PersonList = new List<Person>();
}
}
示例数据
<ViewModel:SummaryViewModel xmlns:ViewModel="ViewModel" Title="Test Title">
<ViewModel:SummaryViewModel.Connections>
<ViewModel:ConnectionViewModel Id="0" />
<ViewModel:ConnectionViewModel Id="1" />
</ViewModel:SummaryViewModel.Connections>
</ViewModel:SummaryViewModel>
查看
<StackPanel x:Class="View.SummaryView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="100"
d:DesignWidth="100"
d:DataContext="{d:DesignData Source=/DesignData/SampleSummaryViewModel.xaml}"
Orientation="Vertical"
Background="LightGreen">
<!-- This Works -->
<Label FontSize="10" FontWeight="Bold" Content="{Binding Title}" />
<!-- This Works -->
<ListBox ItemsSource="{Binding PersonList}" />
<!-- This DOESN'T work -->
<Label FontSize="8" Content="{Binding PersonList, Path=Count}"/>
</StackPanel>
您如何配置SampleData,以便绑定到其中指定的列表的计数?
我尝试将资源类型设置为DesignData
和DesignDataWithDesignTimeCreatableTypes
但没有运气。
答案 0 :(得分:2)
应该是:
<Label FontSize="8" Content="{Binding Path=PersonList.Count}"/>
Mårten也是正确的,你应该使用ObservableCollection。
HTH
答案 1 :(得分:2)
CityView,正如旁注:调试DataBinding我通常使用一个只返回给定值的空转换器。我在那里放了一个断点,这样我就可以看到究竟是来回的。
public class BindTestConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
}
结合这一点以及“输出”窗口告诉我的内容通常会让我找到解决问题的方法。
答案 2 :(得分:1)
它应该有效,但由于您的列表未实现INotifyPropertyChanged
,因此成为一次性绑定,因此Count
更改时绑定不会更新。
请尝试使用ObservableCollection<Person>
。