C# 当导体集合设置为ALACTIVE时,如何停用中的项目

C# 当导体集合设置为ALACTIVE时,如何停用中的项目,c#,.net,wpf,xaml,caliburn.micro,C#,.net,Wpf,Xaml,Caliburn.micro,停用已在ContentControl标记中定义的ViewModel时遇到问题。 我不想将可见性设置为false,因为这似乎是一个不合适的解决方案 这就是它的外观,似乎在AllActivity中,我们不需要激活每个项目: <ContentControl Grid.Column="0" cal:View.Model="{Binding RandomScreenViewModel}"/> 在代码隐藏中,可以将ViewModel的IsEnabled值设置为false。我知道您说过不想将可见

停用已在ContentControl标记中定义的ViewModel时遇到问题。 我不想将可见性设置为false,因为这似乎是一个不合适的解决方案

这就是它的外观,似乎在AllActivity中,我们不需要激活每个项目:

<ContentControl Grid.Column="0" cal:View.Model="{Binding RandomScreenViewModel}"/>

在代码隐藏中,可以将ViewModel的IsEnabled值设置为false。我知道您说过不想将可见性设置为false,但可以将可见性设置为Collapsed。此解决方案将对您的输出完全隐藏它

如果要在代码隐藏中执行此操作,则需要执行以下操作:

yourObject.Visibility = Visibility.Collapsed;

在代码隐藏中,可以将ViewModel的IsEnabled值设置为false。我知道您说过不想将可见性设置为false,但可以将可见性设置为Collapsed。此解决方案将对您的输出完全隐藏它

如果要在代码隐藏中执行此操作,则需要执行以下操作:

yourObject.Visibility = Visibility.Collapsed;

我是WPF Caliburn Micro的新手,我从未在实际应用中使用过
Conductor.Collection.AllActive
,但我尝试过一点。当您将其添加到作为屏幕集合的
项目中时,所有项目都将被激活。
如果您想停用它,只需使用
DeactivateItem(T项,bool close)
方法,该方法获取您正在执行的项,bool指示您也要关闭它

这是一段代码

ShellViewModel.cs

public void Remove()
{
    if (Items.Count > 0)
    {
        DeactivateItem(Items[0], true);
    }
}
<ItemsControl x:Name="Items" />
<Button cal:Message.Attach="Remove"
        Width="50"
        Content="Deactive" />
ShellView.xaml

public void Remove()
{
    if (Items.Count > 0)
    {
        DeactivateItem(Items[0], true);
    }
}
<ItemsControl x:Name="Items" />
<Button cal:Message.Attach="Remove"
        Width="50"
        Content="Deactive" />

当删除项目中的项目时,ShellView将得到更新,因为项目是实现
INotifyCollectionChanged
IObservableCollection的
IObservableCollection类型

我只尝试使用
ItemsControl
绑定项目,但另一个控件也应该能够屏蔽集合(我不知道XD)

我是WPF Caliburn Micro的新手,我从未在实际应用中使用过
Conductor.collection.AllActive
,但我尝试过一点。当您将其添加到作为屏幕集合的
项目中时,所有项目都将被激活。
如果您想停用它,只需使用
DeactivateItem(T项,bool close)
方法,该方法获取您正在执行的项,bool指示您也要关闭它

这是一段代码

ShellViewModel.cs

public void Remove()
{
    if (Items.Count > 0)
    {
        DeactivateItem(Items[0], true);
    }
}
<ItemsControl x:Name="Items" />
<Button cal:Message.Attach="Remove"
        Width="50"
        Content="Deactive" />
ShellView.xaml

public void Remove()
{
    if (Items.Count > 0)
    {
        DeactivateItem(Items[0], true);
    }
}
<ItemsControl x:Name="Items" />
<Button cal:Message.Attach="Remove"
        Width="50"
        Content="Deactive" />

当删除项目中的项目时,ShellView将得到更新,因为项目是实现
INotifyCollectionChanged
IObservableCollection的
IObservableCollection类型
我只尝试使用
ItemsControl
绑定项,但另一个控件也应该能够屏蔽集合(我不知道XD)