我有一个带有 ResourceKey 和 Caption 的 List 值,这些值都是字符串。 Resource 是在资源字典中定义的实际资源的名称。这些 ResourceKey 图标中的每一个都是 Canvas 的。

<Data ResourceKey="IconCalendar" Caption="Calendar"/>
<Data ResourceKey="IconEmail" Caption="Email"/>

然后我有一个 ListView ,它有一个带有按钮的数据模板和按钮下方的文本标题。我想要做的是将 Resource 静态资源显示为按钮的内容。
<ListView.ItemTemplate>
    <DataTemplate>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>

            <Button Content="{Binding ResourceKey}" Template="{StaticResource  RoundButtonControlTemplate}"/>
            <TextBlock Grid.Row="1" Margin="0,10,0,0" Text="{Binding Caption}" HorizontalAlignment="Center" FontSize="20" FontWeight="Bold" />
        </Grid>
    </DataTemplate>
</ListView.ItemTemplate>

我想我已经尝试了绑定(bind)静态资源等的所有排列。

我对替代方案持开放态度,我知道只拥有一个图像并设置源属性可能更容易。

谢谢

最佳答案

稍微想一想后,我最终使用了 ValueConvertor,如下所示:

class StaticResourceConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var resourceKey = (string)value;

        return Application.Current.Resources[resourceKey];
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new Exception("The method or operation is not implemented.");
    }
}

按钮上的绑定(bind)变为
<Button Content="{Binding ResourceKey, Converter={StaticResource resourceConverter}}" />

关于wpf - 将数据上下文字符串属性绑定(bind)到 StaticResource 键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/695624/

10-17 02:42