如何使用字符串的静态资源作为与组合框 SelectedItem 绑定的 DataTrigger 的值?

WinMac

我正在使用一些 ComboBoxes,它们的 ComboBoxItems 是一组 StaticResource 字符串。我想通过使用其SELETEDITEM未被选择的INTERSIONINX来更改组合框的可见性以崩溃。

为此,我编写了以下代码,但 Visual Studio 显示此错误消息:“在使用(密封)‘DataTrigger’后,无法对其进行修改。”

<Window x:Class="CB.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:system="clr-namespace:System;assembly=mscorlib"
    xmlns:local="clr-namespace:CB"
    mc:Ignorable="d"
    Title="MainWindow" Height="177" Width="179">
<Window.Resources>
    <system:String x:Key="Str1">String1</system:String>
    <system:String x:Key="Str2">String2</system:String>
    <system:String x:Key="Str3">String3</system:String>
</Window.Resources>
<StackPanel>
    <ComboBox x:Name="CB1">
        <ComboBoxItem Content="{StaticResource Str1}"/>
        <ComboBoxItem Content="{StaticResource Str2}"/>
        <ComboBoxItem Content="{StaticResource Str3}"/>
    </ComboBox>
    <ComboBox x:Name="CB2">
        <ComboBox.Style>
            <Style TargetType="ComboBox">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=CB1, Path=SelectedItem}" Value="{StaticResource Str3}">
                                                                              <!--Error ^: After a 'DataTrigger' is in use (sealed), it cannot be modified. --> 
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ComboBox.Style>
        <ComboBoxItem Content="{StaticResource Str1}"/>
        <ComboBoxItem Content="{StaticResource Str2}"/>
        <ComboBoxItem Content="{StaticResource Str3}"/>
    </ComboBox>
</StackPanel>

你能帮我解决这个问题吗,可能使用 WPF 代码?

编辑:请有人回答我的问题!

罗伯托

您可以使用 MultiDataTrigger 代替 DataTrigger 并使用 ComboBoxItemToStringConverter:

public class ComboBoxItemToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var combo = value as ComboBoxItem;
        string content = combo?.Content.ToString();
        return content;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

然后你使用:

<Window.Resources>
    ...
    <local:ComboBoxItemToStringConverter x:Key="ObjectToStringConverter" />
</Window.Resources>

<ComboBox.Style>
    <Style TargetType="ComboBox">
        <Setter Property="Visibility" Value="Visible" />
        <Style.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding ElementName=CB1, Path=SelectedItem, Converter={StaticResource ComboBoxItemToStringConverter}}" Value="{StaticResource Str3}" />
                </MultiDataTrigger.Conditions>
                <Setter Property="Visibility" Value="Collapsed" />
            </MultiDataTrigger>
        </Style.Triggers>
    </Style>
</ComboBox.Style>

我希望这个对你有用。

编辑:如果您不想使用 c# 代码。而不是使用“SelectedItem”使用文本:

<Condition Binding="{Binding ElementName=CB1, Path=Text}" Value="{StaticResource Str3}" />

并删除转换器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将值从DataGrid:Cell绑定到DataTrigger

来自分类Dev

UWP Combobox SelectedItem忽略其绑定值

来自分类Dev

UWP Combobox SelectedItem忽略其绑定值

来自分类Dev

ComboBox 未显示 SelectedItem 绑定到的值

来自分类Dev

使用MVVM绑定ComboBox SelectedItem

来自分类Dev

C#-数据绑定组合框始终为.selectedItem或.selectedValue返回空值

来自分类Dev

UWP中的组合框SelectedItem和绑定

来自分类Dev

UWP组合框绑定到SelectedItem属性

来自分类Dev

我如何绑定到 Spinner.SelectedItem

来自分类Dev

XAML DataTrigger绑定

来自分类Dev

WPF级联的DataTrigger绑定

来自分类Dev

Wpf 绑定 + DataTrigger

来自分类Dev

如何使用VisualStateManager代替DataTrigger来实现动态绑定?

来自分类Dev

WPF 组合框 SelectedItem 绑定不会从代码更新

来自分类Dev

如何处理WPF DataGrid的DataTrigger绑定中的空格?

来自分类Dev

ComboBox 中的 SelectedItem 绑定

来自分类Dev

使用显示/值成员时获取列表框SelectedItem字符串

来自分类Dev

DataTrigger基于绑定到DataView的DataGrid中单元格的值

来自分类Dev

从 DataTrigger 内绑定子 DataContext

来自分类Dev

如何从另一个DataContext绑定ComboBox SelectedItem?

来自分类Dev

使用IValueConverter绑定到Enum的ComboBox丢失SelectedItem

来自分类Dev

使用绑定到 XDocument 的 DataContext 在 WPF TreeView 中设置 selectedItem

来自分类Dev

您如何将DataTrigger从资源定义的样式绑定到Child属性?

来自分类Dev

mvvm绑定selecteditem以更新listview

来自分类Dev

xaml SelectedItem中的数据绑定

来自分类Dev

消除数据绑定组合框C#中的空字符串值

来自分类Dev

无法创建用于绑定SelectedItem的目标绑定

来自分类Dev

组合框DataTrigger

来自分类Dev

组合框DataTrigger

Related 相关文章

热门标签

归档