首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StaticResource找不到IValueConverter

StaticResource找不到IValueConverter
EN

Stack Overflow用户
提问于 2015-04-12 05:28:36
回答 1查看 444关注 0票数 0

因此,我试图在XAML中设计一些按钮的样式,但遇到了绑定的静态资源的问题。

我试图得到一个按钮有一个网格系统,与2个cols。图像在左边,contentpresenter在右边(或文本)。我希望这个按钮的每个实例的图像是不同的,所以图像上的源需要不同。我可能用了错误的方法,但我能想到的让按钮XAML在控件模板中反映不同图像的唯一方法是使用按钮的Tag属性,将其设置为源字符串。然后使用IValueConverter将字符串转换为位图图像。但是绑定给了我一个可怕的时间。我已经找遍了所有我能找到的东西,但我无论如何也找不到!

以下是样式代码:

代码语言:javascript
复制
  <Style x:Key="ServerButtonTop" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="#0d5b8f" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Width" Value="220"/>
        <Setter Property="Height" Value="60" />
        <Setter Property="VerticalAlignment" Value="Top" />
        <Setter Property="Margin" Value="20" />
        <Setter Property="FontSize" Value="20" />
        <!-- Template for the buttons -->
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border BorderBrush="#dddddd" BorderThickness="1" Background="{TemplateBinding Background}" CornerRadius="3">
                        <Grid Width="{TemplateBinding Width}">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="50" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Image Width="40" Height="40" Source="{TemplateBinding Tag, Converter={StaticResource StringToImage}}" />
                            <ContentPresenter Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center" Name="thetext" />
                        </Grid>
                    </Border>
                    <!-- trigger for mouse over -->
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Foreground" Value="Black" />
                            <Setter Property="Background" Value="#ACD9F8" />
                         </Trigger>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="RenderTransform" TargetName="thetext">
                                <Setter.Value>
                                    <TranslateTransform Y="1.0" />
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

问题出在line上:

代码语言:javascript
复制
<Image Width="40" Height="40" Source="{TemplateBinding Tag, Converter={StaticResource StringToImage}}" />

为了完成XAML部分,这就是我想要实现的:

代码语言:javascript
复制
<Button Style="{StaticResource ServerButtonTop}" Content="Button Text" Tag="Resources/imagename.png" />

整个按钮工作完美,样式和有网格布局和一切,只是它不会显示图像。

下面是IValueConverter类的代码

代码语言:javascript
复制
    [ValueConversion(typeof(string), typeof(BitmapImage))]
public class StringToImage : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo info)
    {

        return new BitmapImage(new Uri((string)value));

    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo info)
    {
        throw new NotImplementedException();
    }
} 

目前,我遇到的问题是“资源'StringToImage‘无法被解决”。在玩游戏的时候,我得到了一个错误:"IValueConvert无法从字符串转换“。

在同一个IValueConverter窗口的命名空间中,XAML类紧挨着window类。

EN

回答 1

Stack Overflow用户

发布于 2015-04-12 06:18:32

在没有一堆现成的位图的情况下测试它有点棘手。我认为这应该是可行的:

代码语言:javascript
复制
<Image Width="40" Height="40" Source="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource StringToImage}}" />

这很好地解释了为什么这应该在这里工作:WPF TemplateBinding vs RelativeSource TemplatedParent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29583261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档