Изменить изображение в xaml на основе значения из другого xaml

#c# #silverlight #xaml

#c# #silverlight #xaml

Вопрос:

У меня есть Views /Doc.xaml с:

 <navigation:Page ....
 <data:DataGrid>
  <data:DataGridTemplateColumn Header="Actions" HeaderStyle="{StaticResource TextHeaderStyle}" >
<data:DataGridTemplateColumn.CellTemplate>
 <DataTemplate>
    <Grid x:Name="gridDocumentColumns">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <HyperlinkButton x:Name="hlEmail" Grid.Column="1" Tag="{Binding Index}" Click="hlEmail_Click" >
            <ToolTipService.ToolTip>
                <ToolTip Tag="ToolTipEmail" Opened="toolTip_ActionOpened" />
            </ToolTipService.ToolTip>
            <Image Source="../images/close.png" Stretch="None" />
        </HyperlinkButton>
    </Grid>
 </DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid>
..............
  

У меня есть второй класс Views / Controls/ReadDocs.xaml (). Если определенное условие в коде ReadDocs.xaml позади истинно, я хочу изменить источник изображения в Views/Doc.xaml на ../images/open.png

Как я могу этого добиться?

Ответ №1:

Вы можете определить конвертер и передать ему значение флага. Этот конвертер вернет определенный путь в зависимости от переданного вами значения.

Пожалуйста, обратитесь к приведенному ниже конвертеру для справки…

 public sealed class ImagetoPathConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, string language)
        {
            if (value == null)
            {
                return value = "ms-appx:///Assets/Images/bk/1.png";
            }
            else if (value.ToString() == "1")
            {
                return value = "ms-appx:///Assets/Images/bk/2.png";
            }
            else if (value.ToString() == "2")
            {
                return value = "ms-appx:///Assets/Images/bk/3.png";
            }
                    }

        public object ConvertBack(object value, Type targetType, object parameter, string language)
        {
            throw new NotImplementedException();
        }
    }
  

Привяжите конвертер к исходному коду и передайте свое условное значение.

Комментарии:

1. Но источник находится в одном файле, а условие — во втором файле. Как можно передать значение из File1 в File2 и изменить изображение в File2

2. Используйте статическую переменную, если вы хотите иметь флаг в самом коде .. или обновите его в базе данных и прочитайте то же самое перед отображением изображения….