C# 在CaliburnMicro中可见,但未链接

C# 在CaliburnMicro中可见,但未链接,c#,xaml,mvvm,caliburn.micro,C#,Xaml,Mvvm,Caliburn.micro,在我的Shell视图XAML中 <Grid> ..../// <StackPanel x:Name="SettingsPanelIsVisible" Grid.Row="6" Grid.Column="6" Orientation="Vertical" VerticalAlignment="Bottom" > <Button x:Name="Button1" Content="Button 1"/&

在我的Shell视图XAML中

    <Grid>

....///
    <StackPanel x:Name="SettingsPanelIsVisible" Grid.Row="6" Grid.Column="6" Orientation="Vertical" 
                VerticalAlignment="Bottom" >
        <Button x:Name="Button1" Content="Button 1"/>
        <Button x:Name="Button2" Content="Button 2"/>
    </StackPanel>
</Grid>

据我所知,这些应该绑定,可见性应该由caliburn.Micro通过设置或重置bool来切换,但是这不起作用,即使其他组件似乎工作正常

哼,我刚刚读到StackPanel有一些约定名称,您的错误可能来自您对viewmodel类的定义,请不要查看代码:

您必须在viewmodel中输入:使用Caliburn.Micro


此约定适用于Grid或StackPanel,可能还适用于WrapPanel…..

我认为对于名称为stackpanelOK的可见性没有自动约定,因此我在ViewModel中创建了一个名为StackPanelVisible的属性,类型为visibility,并设置{Binding path=StackPanelVisible}但是这不起作用。嗯,我认为你对名称约定的看法是正确的,我已经测试过了,还可以,你的错误似乎来自属性的定义。参见我的回答要最终确定答案,请记住,如果您原来的问题已经解决,请接受并投票支持答案,如果您有其他问题,请提出新问题:
....//
public bool SettingsPanelIsVisible { get; set; }
public class ShellViewModel:Screen or PropertyChangedBase
{
     private bool _SettingsPanelIsVisible;
     public bool SettingsPanelIsVisible
    {
        get => _SettingsPanelIsVisible;
        set
        {
            _SettingsPanelIsVisible = value;
            NotifyOfPropertyChange(() => SettingsPanelIsVisible);
        }
    }
    :
}