代码之家  ›  专栏  ›  技术社区  ›  17 of 26

wpf datatrigger未在预期时触发

  •  29
  • 17 of 26  · 技术社区  · 16 年前

    我有以下XAML:

    <TextBlock Text="{Binding ElementName=EditListBox, Path=SelectedItems.Count}" Margin="0,0,5,0"/>
    <TextBlock Text="items selected">
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=EditListBox, Path=SelectedItems.Count}" Value="1">
                        <Setter Property="TextBlock.Text" Value="item selected"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
    

    第一个文本块使用selecteditems.count愉快地更改,显示0、1、2等。第二个块上的DataTrigger似乎从未触发以更改文本。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  13
  •   Alan Le    16 年前

    public class CountToSelectedTextConverter : IValueConverter
    {
        #region IValueConverter Members
    
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if ((int)value == 1)
                return "item selected";
            else
                return "items selected";
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    
        #endregion
    }
    

    xmlns:local="clr-namespace:ValueConverterExample"
    

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

        <TextBlock Text="{Binding ElementName=EditListBox, Path=SelectedItems.Count, Converter={StaticResource CountToSelectedTextConverter}}"/>
    
        2
  •  28
  •   Robert Macnee    16 年前

    <TextBlock Margin="0,0,5,0" Text="{Binding ElementName=EditListBox, Path=SelectedItems.Count}"/>
    <TextBlock>
        <TextBlock.Style>
            <Style TargetType="{x:Type TextBlock}">
                <Setter Property="Text" Value="items selected"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=EditListBox, Path=SelectedItems.Count}" Value="1">
                        <Setter Property="Text" Value="item selected"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>