2016-02-01 2 views
0

Если я использую этот код:StaticResource Binding не работает, как ImageSource

<btn:Button ButtonImage="{Binding Path=BtnImage, FallbackValue=../Images/Search.png}"/> 

моя кнопка имеет изображение по умолчанию, если BtnImage не установлен. Когда я пытаюсь изменить его на:

<UserControl.Resources> 
     <ImageSource x:Key="DefaultImage"> 
      ../Images/Search.png 
     </ImageSource> 
    </UserControl.Resources> 
... 

<btn:Button ButtonImage="{Binding Path=BtnImage, FallbackValue={StaticResource DefaultImage}}"/> 

Мое изображение по умолчанию не отображается. Я хочу понять, почему и как я могу это исправить, потому что я поклонник этого подхода StaticResource.

Edit:

Мой используется кнопка является фиктивной один:

<UserControl x:Class="WPF_Controls.Controls.Button" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      Name="Btn"> 
    <Button DataContext="{Binding ElementName=Btn}" 
      Command="{Binding Path=ButtonCommand}"> 
     <Image Source="{Binding Path=ButtonImage}" /> 
    </Button> 
</UserControl> 

Решение: Если я использую:

<UserControl.Resources> 
    <system:String x:Key="DefaultImage">pack://application:,,,/DK_WPF_Controls;component/Images/Search.png</system:String> 
</UserControl.Resources> 

все работает, как и ожидалось!

+0

Может быть, проблема не ваша fallbackvalue ... Вы уверены, отметить, устанавливается на фактическое значение обязательного 'BtnImage'? Если что-то установлено, ваше значение fallbackvalue не будет использоваться –

ответ

0

В случае, если есть «Изображение» папка в вашем визуальном проекте студии, который содержит файл «Search.png», и сам файл Build Action установлен в Resource, должен работать:

<UserControl.Resources> 
    <BitmapImage x:Key="DefaultImage" UriSource="/Images/Search.png"/> 
</UserControl.Resources> 

где

UriSource="/Images/Search.png" 

является XAML ярлык для полного Resource File Pack URI, т.е.

UriSource="pack://application:,,,<assembly name>;component/Images/Search.png" 

В качестве альтернативы вы можете также использовать неявное преобразование из строки в ImageSource как

<ImageSource x:Key="DefaultImage">/Images/Search.png</ImageSource> 
+0

, это не сработает для меня ... – GrayFox

+0

Итак, ваш файл изображения не находится в папке '../ Image' относительно текущего каталога вашего приложения , Это ресурс изображения? – Clemens

+0

yes it is and image resoruce и посмотреть мое сообщение: Если я использую «..Images/Search.png» вместо StaticResource, все в порядке ... – GrayFox

Смежные вопросы