Pergunta

Eu tenho um controle de usuário que expõe uma propriedade do tipo ImageSource. Eu quero expor essa propriedade no Blend para que eu possa editá-lo no Blend, em vez de especificar a imagem no código.

Com base no que Eu pesquisei, eu adicionei uma propriedade de dependência, e especificou atributos adequados para expor a propriedade em Blend.

Eu posso vê-lo lá, e editá-lo (como um campo de texto). O que eu quero fazer é ter uma lista suspensa de recursos de imagem disponíveis para baixo, e um botão de navegação para carregar até uma outra imagem. Em outras palavras, eu quero que ele se comportar como a propriedade 'Fonte' do controle 'Imagem'.

editar Apenas como um aparte, tenho notado que a exposição Alinhamento ou propriedades de margem se comporta como esperado, ele só parece ser imagens que não funcionam. Estou realmente preso em um presente e gostaria de receber ajuda!

Os meus olhares de código atual, como:

public static readonly DependencyProperty ImageSourceProperty =
        DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(SmartButton));

[Category("Appearance")]
[Bindable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public ImageSource ImageSource
{
    get { return (ImageSource)GetValue(ImageSourceProperty); }
    set
    {
        SetValue(ImageSourceProperty, value);
        this.BackgroundImage.Source = value;
    }
}
Foi útil?

Solução

Eu tenho trabalhado em quase exatamente este problema (menos Blend, além de usar a propriedade em um ControlTemplate em XAML.)

No meu caso eu ter começado a trabalhar, alterando ImageSource para BitmapSource. ImageSource é abstrato, BitmapSource estende ImageSource.

No entanto, algo não se sente bem sobre isso. O tipo de Image.Source é ImageSource. Se é ou não é abstrato, parece que eu deveria ser capaz de usar um DependencyProperty do tipo ImageSource.

Assim, para o meu próprio caso, eu tenho que trabalhar com BitmapSource mas eu ainda estou investigando.

EDIT: Espero que você não se importa uma resposta quase um ano depois que você perguntou: +/- 12 horas. ;)

EDIT2: George, eu também queria chegar a este trabalho para mim com ImageSource usando:

public static readonly DependencyProperty SourceProperty =
    Image.SourceProperty.AddOwner(typeof(MyCustomButton));
public ImageSource Source
{
    get { return (ImageSource)GetValue(SourceProperty); }
    set { SetValue(SourceProperty, value); }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top