У меня возникла проблема при попытке связать источник изображения. Я создаю настольную игру, в которой вы можете выбрать игрока для просмотра его атрибутов (включая его образ). Также поля на доске имеют изображения в качестве фона.WPF Image Source привязка иногда иногда работает
Шаблон я создал для полей:
<ControlTemplate x:Key="fieldButtonTemplate" x:Name="fieldButtonTemplateName" TargetType="{x:Type Button}">
<Grid x:Name="fieldGrid" Visibility="Visible">
<Grid.LayoutTransform>
<RotateTransform Angle="{Binding ImageRotate}" />
</Grid.LayoutTransform>
<Grid.Background>
<ImageBrush ImageSource="{Binding Path=ImageSource}"/>
</Grid.Background>
<Grid.RowDefinitions>
....
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
...
</Grid.ColumnDefinitions>
</Grid>
</ControlTemplate>
И один для просмотра игрока атрибутов:
<Image Source="{Binding Path=CurrentlySelected.ImageSource}" Grid.Column="0" Grid.Row="0"
Grid.ColumnSpan="2" Stretch="Fill" />
<StackPanel x:Name="CurrentPlayerStackPanel" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2">
<TextBlock Text="{Binding Path=CurrentlySelected.Name}" TextWrapping="Wrap"
FontFamily="Magneto" FontSize="20" Foreground="BlanchedAlmond"/>
<TextBlock Text="{Binding Path=CurrentlySelected.Character}" TextWrapping="Wrap"
FontFamily="Magneto" FontSize="20" Foreground="BlanchedAlmond"/>
<TextBlock Text="{Binding Path=CurrentlySelected.Money}" TextWrapping="Wrap"
FontFamily="Magneto" FontSize="20" Foreground="BlanchedAlmond"/>
</StackPanel>
Проблема заключается в том, что изображение показывает только при выборе игрока и не показывает, как фон к сетке. Я создал интерфейс для обоих игроков и полей:
interface IVisualObject
{
int ImageRotate { get; set; }
string ImageSource { get; set; }
}
Изображения ресурсов, строить действие, установленное для содержания и скопировать в каталог вывода устанавливается для копирования, если новее. Строка я пытаюсь передать в качестве источника изображения, как
"пакет: // siteoforigin: ,,,/Ресурсы/picture.jpg"
кстати ImageRotate является переплетены просто отлично. Спасибо заранее!
EDIT: если я установить его как
<Grid.Background>
<ImageBrush ImageSource="pack://siteoforigin:,,,/Resources/picture.jpg"/>
</Grid.Background>
это работает.
(сторона примечания) вы уверены, что не хотите // приложение: и нести изображения в том же каталоге, что и ваш exe? все еще думая о вашем первоначальном вопросе ... у вас есть кнопка targettype ... где кнопка? –
Почему это было бы лучше? этот шаблон находится в другом файле xaml, чем сама кнопка, я не думал, что это важно для вопроса, поскольку, если я заменю источник изображения внешним источником (например, c: \ something \ testField.jpg), он отлично работает , –
работает RotateTransform, но изображения нет? –