gpt4 book ai didi

c# - WPF - 检测转换器中的设计模式

转载 作者:行者123 更新时间:2023-11-30 15:24:09 26 4
gpt4 key购买 nike

我有一个转换器,我希望能够在设计模式下将其中的值更改为 Visibility.Collapsed。是的,它忽略了 GetIsInDesignMode。

此外,我通过依赖注入(inject) (prism) 绑定(bind) VM

转换器:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{

if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
return Visibility.Collapsed;

if (value != null && value is AllowedSourceCode)
{
var allowedSourceCode = (AllowedSourceCode)value;

if (value == null)
return Visibility.Visible;
else if (allowedSourceCode.SupportedSourceCodes.Contains(allowedSourceCode.SelectedSourceCode))
{
return Visibility.Collapsed;
}
else
return Visibility.Visible;

}
return Visibility.Collapsed;
}

查看:

        <Canvas Visibility="{Binding SupportedSourceCodes,Converter={StaticResource AllowedSourcesConverter}}" Background="Gray" Opacity="0.9"
Grid.Row="0" Grid.Column="0" Grid.RowSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Panel.ZIndex="5" >

xaml.cs:

        public ACARSubLedgerUC(ACARSubLedgerVM vm)
{
InitializeComponent();
DataContext = vm;
}

最佳答案

您所做的应该有效。

我猜你的窗口后面有一个 View 模型,并在绑定(bind)到该 View 模型时使用了转换器。请确保您在 XAML 而不是代码中设置数据上下文,因为如果您在代码中设置它,您的转换器将永远不会在设计模式下命中。

<Window x:Class="WpfApp1.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:WpfApp1"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="525"
Height="350"
mc:Ignorable="d">

<Window.DataContext>
<local:ViewModel />
</Window.DataContext>

...

</Window>

这确保绑定(bind)在设计时更新,因此您的转换器将被调用。

关于c# - WPF - 检测转换器中的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33401900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com