首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何不使用RelativeSource FindAncestor绑定?

如何不使用RelativeSource FindAncestor绑定?
EN

Stack Overflow用户
提问于 2021-09-24 15:21:55
回答 1查看 68关注 0票数 0

我需要一些关于我的Uno UWP项目的绑定帮助。我有以下目标:

代码语言:javascript
复制
    public class ViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<Picture> Pictures {get;set;}
        public int ImageWidth {get;set;}
    }
    public class Picture : INotifyPropertyChanged
    {
        public string URL {get;set;}
        public int ImageWidth {get;set;}
    }

我有以下看法:

代码语言:javascript
复制
<Page>
    <Grid>
        <Grid.RowDefinition>
            <RowDefinition Height=*/>
            <RowDefinition Height="Auto"/>
        </Grid.Rowdefinition>   
        <GridView ItemsSource="{Binding Pictures}" SelectionMode="Extended" IsMultiSelectCheckBoxEnabled="False"
                  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" SelectionChanged="ImageSelectionChanged" >
            <GridView.ItemContainerStyle>
                <Style TargetType="GridViewItem">
                    <Setter Property="Margin" Value="10"/>
                </Style>
            </GridView.ItemContainerStyle>
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid MaximumRowsOrColumns="5" Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Grid Margin="4">
                        <Image Source="{Binding URL}" Width="{Binding ImageWidth,Mode=TwoWay}" MinWidth="200"/>
                    </Grid>
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>
       <Slider Grid.Row="1" Width="200" Minimum="200" Maximum="1500" StepFrequency="100" TickPlacement="Outside" VerticalAlignment="Bottom" Margin="20,0"
                       Value="{Binding ImageWidth, Mode=TwoWay}" />
    </Grid>
</Page> 

页面DataContext是ViewModel。这是可行的,因为Picture类有一个ImageWidth。相反,我想绑定到ViewModel.ImageWidth属性。我怎么才能在尤诺做这个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 18:55:40

假设您希望您的Slider 更改所有图片的宽度,

您可以通过这样更改实体来共享ImageWidth

代码语言:javascript
复制
    public class ViewModel : INotifyPropertyChanged
    {
        public ObservableCollection<Picture> Pictures {get;set;}
        public int ImageWidth {get;set;}
    }
    public class Picture : INotifyPropertyChanged
    {
        public ViewModel Parent {get;}
        public string URL {get;set;}
    }

然后在项目模板中使用以下绑定:

代码语言:javascript
复制
<Image Source="{Binding URL}"
       Width="{Binding Parent.ImageWidth}"
       MinWidth="200"/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69317500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档