【问题标题】:IsVisible in CaliburnMicro not linkingCaliburnMicro 中的 IsVisible 未链接
【发布时间】:2023-04-07 19:55:01
【问题描述】:

在我的 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>

在我的 ShellViewModel 中

....//
public bool SettingsPanelIsVisible { get; set; }

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

【问题讨论】:

  • 我不认为堆栈面板名称的可见性自动约定
  • 好的,所以我在 ViewModel 中创建了一个名为“StackPanelVisible”的类型可见性并设置“{Binding path=StackPanelVisible }”的属性,但这也不起作用
  • 嗯,我认为您对名称约定的看法是正确的,我已经测试过并且没问题,看来您的错误来自属性的定义。看我的回答
  • 要最终确定答案,如果您的原始问题已解决,请记住接受并投票,如果您有其他问题,请提出新问题:stackoverflow.com/help/someone-answers

标签: c# xaml mvvm caliburn.micro


【解决方案1】:

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

你必须输入视图模型:using Caliburn.Micro;

public class ShellViewModel:Screen or PropertyChangedBase
{
     private bool _SettingsPanelIsVisible;
     public bool SettingsPanelIsVisible
    {
        get => _SettingsPanelIsVisible;
        set
        {
            _SettingsPanelIsVisible = value;
            NotifyOfPropertyChange(() => SettingsPanelIsVisible);
        }
    }
    :
}

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

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2015-04-03
    • 1970-01-01
    • 2017-12-27
    • 2015-07-05
    • 2016-06-13
    • 2018-07-24
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多