我如何使用 Caliburn 在事件发生后默认检查方法?
How can I use Caliburn to check a method by default after an event?
我正在使用 Caliburn.Micro XAML 框架。我有一个 Button
,我需要在每次点击后检查它是否应该保持启用状态 => 每次点击都会从集合中删除一个对象,当它为空时,按钮必须被禁用。
Can 方法检查是自动的,但它只在 window 加载期间检查。我需要在每次点击后一遍又一遍地检查它。
具体来说,每次点击后我都需要检查是否ObservableCollection.Count > 0
,如果不是,则禁用此Button
。
XAML 查看:
<Button x:Name="AddRecord" IsEnabled="{Binding CanAddRecord}"/>
C# 视图模型:
public bool CanAddRecord()
{// debugging does not go here, thats the PROBLEM i need to solve
return Collection.Count > 0
}
public void AddRecord()
{// here it is OK, debugging goes here properly
Collection.Add(someObject);
}
问题:在每次单击按钮后,默认情况下使用 Caliburn 检查 CanAddRecord
方法是否有一些优雅的方法?
注意:我尽量避免 PropertyChanged 事件和类似事件。因为它否定了Caliburn原理。
而不是绑定 IsEnabled
属性,您应该添加一个 CanAddRecord
属性 到您的视图模型,并为此引发 PropertyChanged
事件在你的 AddRecord()
方法中:
public ObservableCollection<int> Collection { get; } = new ObservableCollection<int>();
public void AddRecord()
{
Collection.Add(1);
NotifyOfPropertyChange(nameof(CanAddRecord));
}
public bool CanAddRecord => Collection.Count == 0;
XAML:
<Button x:Name="AddRecord" Content="Add" />
这应该在将项目添加到源集合时禁用 Button
。
Caliburn.Micro 都是关于约定的。由于你的Button
的Name
属性设置为"AddRecord",框架会将其连接到AddRecord()
方法和CanAddRecord
属性 为您在幕后的视图模型。
我正在使用 Caliburn.Micro XAML 框架。我有一个 Button
,我需要在每次点击后检查它是否应该保持启用状态 => 每次点击都会从集合中删除一个对象,当它为空时,按钮必须被禁用。
Can 方法检查是自动的,但它只在 window 加载期间检查。我需要在每次点击后一遍又一遍地检查它。
具体来说,每次点击后我都需要检查是否ObservableCollection.Count > 0
,如果不是,则禁用此Button
。
XAML 查看:
<Button x:Name="AddRecord" IsEnabled="{Binding CanAddRecord}"/>
C# 视图模型:
public bool CanAddRecord()
{// debugging does not go here, thats the PROBLEM i need to solve
return Collection.Count > 0
}
public void AddRecord()
{// here it is OK, debugging goes here properly
Collection.Add(someObject);
}
问题:在每次单击按钮后,默认情况下使用 Caliburn 检查 CanAddRecord
方法是否有一些优雅的方法?
注意:我尽量避免 PropertyChanged 事件和类似事件。因为它否定了Caliburn原理。
而不是绑定 IsEnabled
属性,您应该添加一个 CanAddRecord
属性 到您的视图模型,并为此引发 PropertyChanged
事件在你的 AddRecord()
方法中:
public ObservableCollection<int> Collection { get; } = new ObservableCollection<int>();
public void AddRecord()
{
Collection.Add(1);
NotifyOfPropertyChange(nameof(CanAddRecord));
}
public bool CanAddRecord => Collection.Count == 0;
XAML:
<Button x:Name="AddRecord" Content="Add" />
这应该在将项目添加到源集合时禁用 Button
。
Caliburn.Micro 都是关于约定的。由于你的Button
的Name
属性设置为"AddRecord",框架会将其连接到AddRecord()
方法和CanAddRecord
属性 为您在幕后的视图模型。