我在我的应用程序中使用Caliburn.Micro。 我有这个ListBox
<ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Source={x:Static models:Tags.AvailableTags}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding ???}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
基本上,我想将CheckBox的IsChecked属性绑定到DataContext的方法。我该怎么办呢?我知道如何绑定Caliburn.Micro中的事件,但我从来没有将方法绑定到属性。该方法也有一个属性。
答案 0 :(得分:0)
您应该将视图中的ListBox集合绑定到具有您希望显示的属性的BindableCollection,即Name和Enabled。
public class MyCollection
{
public string Name { get; set; }
public bool Checked { get; set; }
}
然后在您查看模型绑定到MyCollection对象的集合:
public class YourViewModel : Screen
{
private readonly IEventAggregator _Aggregator;
private BindableCollection<MyCollection> tags= new BindableCollection<MyCollection>();
public YourViewModel(IEventAggregator aggregator)
{
if (aggregator == null)
throw new ArgumentNullException("aggregator");
_Aggregator = aggregator;
_Aggregator.Subscribe(this);
}
public BindableCollection<MyCollection> AvailableTags
{
get
{
if (tags== null)
tags= new BindableCollection<MyCollection>();
return tags;
}
set
{
tags= value;
NotifyOfPropertyChange(() => MyCollection);
}
}
}
由于您还使用标准WPF ListBox,因此Caliburn允许您根据约定将视图绑定到视图:<ListBox x:Name=AvailableTags />