WPF设计时更改控件可见性

3

我的自定义控件UI元素Visibility是通过BoolToVisibilityConverter绑定的,见下面的代码:

<cc:CustomFFU LabelText="FFUZoneF_2-1"  HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="2" Grid.Column="1" Width="55" Height="35" 
        InstanceAddress="MCS1.Cleanroom.ProcessCell.UN_ZonesF.EM_FFU.CM_FFU2_1" 
        Visibility="{Binding VisibilityFFUView, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource BoolToVisibilityConverter}}" />

代码功能正常,但是在设计时可见性为Collapsed。因此,在开发过程中,窗口上的每个CustomControl都不可见。这很烦人。如何将design-time期间的可见性设置为Visibility?另外,当我删除BoolToVisibilityConverter时,状态从Collapsed更改为Visible?也许是因为在设计时该值表示false。只是一个猜测。

你还没有展示足够的 View xaml 和它的 DataContext,请参考 https://stackoverflow.com/help/minimal-reproducible-example。 - Stefan Wuebbe
作为一条注释,将 UpdateSourceTrigger=PropertyChanged 设置在可见性绑定上是无意义的。UpdateSourceTrigger 只对双向或单向到源绑定有影响。 - Clemens
2
使用Visual Studio中的XAML设计器与设计时数据共同使用 - BionicCode
2个回答

4
如果你使用的是Visual Studio,你应该在xaml元素中添加d:Visibility="Visible"属性,以使其在设计时可见。
像这样:
<Button Visibility="{Binding Property}" d:Visibility="Visible" />

确保您的根xaml元素上有来自"http://schemas.openxmlformats.org/markup-compatibility/2006"命名空间的Ignorable="d",就像这样:

<Window x:Class="WpfApp2.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                xmlns:local="clr-namespace:WpfApp2"
add this --->   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
and this --->   mc:Ignorable="d"
                Title="MainWindow" Height="450" Width="800">
    <Grid>
    </Grid>
</Window>

这在Rider WPF设计器中不起作用。


1
感谢您的回答。当我添加d:Visibility时,出现了以下错误。属性“Visibility”在“http://schemas.microsoft.com/expression/blend/2008”命名空间中不存在。 - AfronSall
1
再次感谢。我已经将两者集成了,但仍然收到相同的错误消息。我正在使用Visual Studio 2019。 - AfronSall
1
@AfronSall 是的,这里是链接 https://github.com/U7nk/d-Visibility-example/tree/main ,使用 Visual Studio 2019 Community 16.11.14 进行了测试。 - Kliment Nechaev
1
到目前为止,您的帮助非常棒。我接受了您的答案,因为git样例正在按照预期工作。然而,我的项目使用的是VS框架4.6.1,但出于某种原因无法正常工作。您知道原因吗? - AfronSall
2
@AfronSall 看起来 net framework 不支持 d:Visibility,但你可以使用另一种方法。这里是 net framework 4.6.1 的示例(在 visual studio 2022 上效果不佳,vs 19 可以)https://github.com/U7nk/d-Visibility-example/tree/main/NET%20Framework%204.6.1%20Example 我稍后会将其添加到答案中。 - Kliment Nechaev
显示剩余5条评论

1
我找到了解决“为什么vs2019不能直接使用”的方法。 这是微软的答案:https://learn.microsoft.com/en-us/visualstudio/xaml-tools/xaml-designtime-data?view=vs-2019#troubleshooting
  1. 设计时数据需要Visual Studio 2019版本16.7或更高版本。
  2. 支持针对.NET Core和UWP的Windows Presentation Foundation(WPF)的Windows桌面项目。此功能也适用于.NET Framework预览版。要启用它,请转到工具 > 选项 > 环境 > 预览功能,选择.NET Framework的新WPF XAML设计器,然后重新启动Visual Studio。
当我选择了.NET Framework的新WPF XAML设计器时,我就可以使用,而且再也没有看到错误了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接