【问题标题】:StatusBar - Dynamic items and static itemsStatusBar - 动态项和静态项
【发布时间】:2020-03-03 14:23:41
【问题描述】:

我有一个状态栏,它将包含一些动态状态栏和一些“硬编码”状态栏。由于某种原因,没有显示动态状态栏项目,即使与 ViewModel 属性的绑定已经完成,我可以使用 Live Visual Tree 看到这些项目

这是状态栏

<StatusBar x:Name="StatusBar" Grid.Column="2" Grid.Row="1" ItemsSource="{Binding}">
            <StatusBar.Background>
                <SolidColorBrush Color="White" Opacity="0.5"/>
            </StatusBar.Background>
            <StatusBarItem Height="60" Width="120" HorizontalAlignment="Right">
                <Image Source="Logo.png" ></Image>
            </StatusBarItem>           
            <Separator></Separator>        
            <StatusBar.ItemTemplate>                
                <DataTemplate>
                    <TextBlock Text="ASDF"></TextBlock>
                </DataTemplate>
            </StatusBar.ItemTemplate>
        </StatusBar>

这是运行时的状态栏。

如您所见,有 5 个项目是可见的,而来自可观察集合的 2 个项目不会在 UI 上呈现。

这就是 UI 的外观

绿色/蓝色部分可见,StatusBar 空间的其余部分由最后一个分隔符占用。找不到我的动态项目。

有什么想法吗?我可以让动态/静态项目在同一个状态栏中工作吗?或者我需要添加 2 个状态栏,一个用于动态内容,另一个用于静态内容。

【问题讨论】:

    标签: wpf statusbar itemsource


    【解决方案1】:

    我可以让动态/静态项目在同一个状态栏中工作吗?

    没有。您不能既绑定到ItemsSource 又将静态对象添加到Items 集合。

    如果您的绑定有效,您将收到一个InvalidOperationException,说明“Items 集合必须为空,然后才能使用ItemsSource。”

    您应该做的是将静态项目添加到视图模型中的源集合中。

    【讨论】:

    • 是的,刚刚添加了 2 个状态栏,就可以了。好吧,这个问题有点回答了。我无法将静态项目添加到集合中,因为它们的设计完全不同。我将不得不坚持使用 2 个状态栏。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2018-04-04
    相关资源
    最近更新 更多