代码之家  ›  专栏  ›  技术社区  ›  Dan14021

使用IValueConverter调整绑定到数据源的图像大小

  •  0
  • Dan14021  · 技术社区  · 10 年前

    我有一个图像文件绑定到网格内的image元素,如下所示

       <FlipView x:Name="FlipView" ItemsSource="{Binding Source={StaticResource ItemsViewSource}}" SelectionChanged="FlipView_SelectionChanged">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <Grid SizeChanged="Grid_SizeChanged">
                        <Image Source="{Binding File, Converter={StaticResource ImageConverter}}" Stretch="None" />
                    </Grid>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>
    

    图像设置为不拉伸,因为我正在IValueConverter内部调整大小,这样小图像就不会像素化,而大图像仍然会缩小以适应屏幕。

    当我的应用程序大小发生变化时,如何触发IValueConverter重新计算当前显示的图像大小?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Haojie    10 年前

    使生效 INotifyPropertyChanged 界面,当应用程序的大小发生变化时,设置File属性值。

    public PropertyChangedEventHandler PropertyChanged;
    
    private void NotifyPropertyChanged(string propertyName)
    {
         PropertyChangedEventHandler handler = this.PropertyChanged;
         if (handler != null)
         {
              var e = new PropertyChangedEventArgs(propertyName);
              handler(this, e);
         }
    }
    
    private String file;
    
    public String File
    {
        get 
        { 
             return file; 
        }
        set
        {
             file = value;
             NotifyPropertyChanged("File");
        }
    }