C#WPF使用ObjectDataProvider绑定到方法

我使用ObjectDataProvider有一个奇怪的行为。我需要将TextBlockToString方法绑定,但是当我输入方法时,我的属性是错误的。

这是我简单的ObjectDataProvider

<Window.Resources>
    <ObjectDataProvider x:Key="ToString" MethodName="ToString" ObjectType="{x:Type entities:Season}" />
</Window.Resources>

这是我的ListView

<ListView Grid.Row="2" Name="lvSeasons" HorizontalContentAlignment="Stretch">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="30" />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Column="0" Text="{Binding Source={StaticResource ToString}}" VerticalAlignment="Center" />
                <Button Grid.Column="1" VerticalAlignment="Center" Background="Transparent" BorderBrush="Transparent" Click="btDeleteSeason_Click">
                    <TextBlock FontFamily="{StaticResource FontAwesome}" Text="&#xf1f8;" FontSize="20" Foreground="Red" HorizontalAlignment="Center" />
                </Button>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

我的方法只是连接两个属性:

public override string ToString()
{
    return StartYear + "/" + EndYear;
}

在调试中,我可以看到开始和结束年份始终为0。如果我使用TextBlock绑定{Binding StartYear},那是正确的,值是2019。

问题出在哪里?

oji6695 回答:C#WPF使用ObjectDataProvider绑定到方法

您不需要ObjectDataProvider。只是写

<TextBlock Text="{Binding}" ... />

WPF默认会调用ToString方法。

当您将MultiBinding与适当的StringFormat一起使用时,甚至不需要覆盖ToString:

<TextBlock ...>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}/{1}">
            <Binding Path="StartYear "/>
            <Binding Path="EndYear "/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
本文链接:https://www.f2er.com/3123181.html

大家都在问