代码之家  ›  专栏  ›  技术社区  ›  Tomas Chabada

无法解析CellTemplate绑定中的符号

  •  0
  • Tomas Chabada  · 技术社区  · 6 年前

    我有一个列表视图控件项源绑定到 Producers 财产和它的运作良好。但是当我试图添加一些数据触发器时 Cannot resolve symbol 'Up' VS警告。
    代码可以工作,但我想通过显式指定绑定源来消除警告。

    我试图使用relative source,但发现CellTemplate不能使用RelativeSource,因为它不是VisualTree的一部分。

    <ListView ItemsSource="{Binding Producers, ElementName=This}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"></GridViewColumn>
                <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}"></GridViewColumn>
                <GridViewColumn Header="Up">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Up}">
                                <TextBlock.Style>
                                    <Style TargetType="TextBlock">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding Up}" Value="True">
                                                <Setter Property="Foreground" Value="Green"></Setter>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding Up}" Value="False">
                                                <Setter Property="Foreground" Value="Red"></Setter>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </TextBlock.Style>
                            </TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>  
    

    This 元素定义为:

    <Window x:Class="Helper.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:local="clr-namespace:Helper"
            mc:Ignorable="d"
            Title="MainWindow" Height="900.731" Width="889.344"
            x:Name="This">
        <Grid>
            ...
        </Grid>
    </Window>
    

    有人能帮忙吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   dhilmathy    6 年前

    尝试设置 DataContext 在设计模式下。就像, d:DataContext="{d:DesignInstance vm:ViewModel}" .

    对于你的情况,我认为应该是, d:DataContext="{d:DesignInstance model:Producer}"

    简单地设置为 TextBlock .

    <TextBlock Text="{Binding Up}" d:DataContext="{d:DesignInstance model:Producer}">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Up}" Value="True">
                        <Setter Property="Foreground" Value="Green"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Up}" Value="False">
                        <Setter Property="Foreground" Value="Red"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>