根据另一个xaml中的值更改xaml中的图像

时间:2014-07-01 11:25:30

标签: 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 Code Behind中的某个条件为真,我想将Views / Doc.xaml中的图像源更改为../ images / open.png

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以定义转换器并将标志值传递给它。 此转换器将根据您传递的值返回特定路径。

请参考以下转换器以供参考......

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();
        }
    }

将转换器绑定在Source中并传递条件值。