我有以下标记:
<StackPanel Grid.Row="0" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Visibility="{Binding OrgListVisibility}">
<Label Content="Org:" />
<ComboBox ItemsSource="{Binding OrgSelectList, NotifyOnSourceUpdated=True}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedItem="{Binding OrgId}" />
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding BranchListVisibility}">
<TextBlock Text="Branch:" Style="{StaticResource FormLabel}" />
<ComboBox x:Name="BranchList" ItemsSource="{Binding BranchSelectList}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedItem="{Binding BranchId}" />
</StackPanel>
</StackPanel>
然而,当我运行这个应用程序时,只有TextBlock
的文本是可见的,而Label
的文本是不可见的。后者在可视树中,在最深处有一个TextBlock
,但这是我所能看到的。
**根据要求:**以下是FormLabel
的样式:
<Style TargetType="TextBlock" x:Key="FormLabel">
<Setter Property="Height" Value="20" />
<Setter Property="Margin" Value="10" />
<Setter Property="TextAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
**一个类似的问题:**当我把一个组合框绑定到一个泛型类的示例集合时,我发现了一个几乎类似的问题。项目的文本没有显示,但它们出现在组合框中。通过知道我所寻找的项目的位置来选择一个组合框,正确地级联到第二个组合框,它有可见的项目,我可以看到正确的但不可见的项目已经被选择。
一旦我将项目源更改为非通用对象列表,下拉列表中的项目就再次可见。
5条答案
按热度按时间rpppsulh1#
代码看起来很好,正如你在注解部分提到的,它占用布局空间,那么很可能发生的是,你的标签的颜色和包含布局的背景色是相同的。
要解决此问题,请尝试为标签提供一些不同的背景色和前景色,例如红色或蓝色。希望这会有所帮助
crcmnpdw2#
Ctrl+Q -〉实时可视化树
然后点击“pick element”按钮并选择你的标签。检查以下属性:
Visibility
Opacity
Content
同时检查Label的子元素。设置Content应该会得到如下的树:
如果默认样式更改了控件模板,则可能无法在此处看到作为子级的TextBlock。另外,钻取TextBlock并确保它具有正确的Text属性。然后确保它和它的所有父节点具有正确的
Opacity
和Visibility
。此外,通过选择内部TextBlock并在实时视觉化树窗口中打开突出显示功能,确保为它分配了空间。ckx4rj1h3#
你能试试这段代码看它是否有效吗?
rmbxnbpk4#
当标签为
Visibility == Hidden
时,不可见时,标签将占用布局空间。您应检查并确保应用程序未为TargetType="Label"
定义全局样式(无键样式),其中可设置此值:这不需要在同一个xaml文件中才能自动应用,您应该检查全局字典或文件中链接的任何其他ResourceDictionary。
xlpyo6sf5#
我也遇到了同样的问题。原来是标签高度太小了。增加了高度,它的内容就变得可见了。